"""Configuration management — persists Mealie connection settings to a JSON file.""" import json import os from pathlib import Path DATA_DIR = Path(os.environ.get("DATA_DIR", "/data")) CONFIG_FILE = DATA_DIR / "config.json" _DEFAULTS = { "mealie_url": "", "mealie_api_key": "", } def _ensure_dir(): DATA_DIR.mkdir(parents=True, exist_ok=True) def load() -> dict: """Return the current config dict, merged with defaults.""" cfg = dict(_DEFAULTS) if CONFIG_FILE.exists(): try: with open(CONFIG_FILE, "r", encoding="utf-8") as f: cfg.update(json.load(f)) except (json.JSONDecodeError, OSError): pass return cfg def save(cfg: dict): """Atomically persist *cfg* to disk.""" _ensure_dir() tmp = CONFIG_FILE.with_suffix(".tmp") with open(tmp, "w", encoding="utf-8") as f: json.dump(cfg, f, indent=2, ensure_ascii=False) tmp.replace(CONFIG_FILE)