Add CLI source code and update .gitignore
This commit is contained in:
77
cli_anything/codimd/core/config.py
Normal file
77
cli_anything/codimd/core/config.py
Normal file
@@ -0,0 +1,77 @@
|
||||
"""
|
||||
Configuration management for CodiMD CLI.
|
||||
"""
|
||||
|
||||
import os
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class Config:
|
||||
"""Configuration manager for CodiMD CLI."""
|
||||
|
||||
DEFAULT_SERVER = "http://localhost:3000"
|
||||
CONFIG_DIR = Path.home() / ".config" / "cli-anything-codimd"
|
||||
|
||||
def __init__(self):
|
||||
self.config_dir = self.CONFIG_DIR
|
||||
self.config_dir.mkdir(parents=True, exist_ok=True)
|
||||
self.config_file = self.config_dir / "config.json"
|
||||
self.session_file = self.config_dir / "session.json"
|
||||
self.cache_file = self.config_dir / "cache.json"
|
||||
|
||||
self._config = self._load_config()
|
||||
|
||||
def _load_config(self) -> dict:
|
||||
"""Load configuration from file or create default."""
|
||||
if self.config_file.exists():
|
||||
with open(self.config_file, "r") as f:
|
||||
return json.load(f)
|
||||
|
||||
default_config = {
|
||||
"server": os.environ.get("CODIMD_SERVER", self.DEFAULT_SERVER),
|
||||
"timeout": 30,
|
||||
"verify_ssl": True,
|
||||
}
|
||||
self.save_config(default_config)
|
||||
return default_config
|
||||
|
||||
def save_config(self, config: dict):
|
||||
"""Save configuration to file."""
|
||||
with open(self.config_file, "w") as f:
|
||||
json.dump(config, f, indent=2)
|
||||
self._config = config
|
||||
|
||||
@property
|
||||
def server(self) -> str:
|
||||
"""Get configured server URL."""
|
||||
return self._config.get("server", self.DEFAULT_SERVER)
|
||||
|
||||
@server.setter
|
||||
def server(self, value: str):
|
||||
"""Set server URL."""
|
||||
self._config["server"] = value
|
||||
self.save_config(self._config)
|
||||
|
||||
@property
|
||||
def timeout(self) -> int:
|
||||
"""Get request timeout."""
|
||||
return self._config.get("timeout", 30)
|
||||
|
||||
@timeout.setter
|
||||
def timeout(self, value: int):
|
||||
"""Set request timeout."""
|
||||
self._config["timeout"] = value
|
||||
self.save_config(self._config)
|
||||
|
||||
@property
|
||||
def verify_ssl(self) -> bool:
|
||||
"""Get SSL verification setting."""
|
||||
return self._config.get("verify_ssl", True)
|
||||
|
||||
@verify_ssl.setter
|
||||
def verify_ssl(self, value: bool):
|
||||
"""Set SSL verification setting."""
|
||||
self._config["verify_ssl"] = value
|
||||
self.save_config(self._config)
|
||||
Reference in New Issue
Block a user