from __future__ import annotations from dataclasses import dataclass from pathlib import Path import tomlkit DEFAULT_CONFIG_PATH = Path.home() / ".config" / "my-publisher" / "config.toml" @dataclass class Config: blog_repo: str = "" transart_script: str = "/home/danix/bin/transart.py" typora_bin: str = "typora" def is_complete(self) -> bool: return bool(self.blog_repo) def save(self, path: Path | None = None) -> None: import core.config as _mod if path is None: path = _mod.DEFAULT_CONFIG_PATH path.parent.mkdir(parents=True, exist_ok=True) doc = tomlkit.document() doc.add("blog_repo", self.blog_repo) doc.add("transart_script", self.transart_script) doc.add("typora_bin", self.typora_bin) path.write_text(tomlkit.dumps(doc)) @classmethod def load(cls, path: Path | None = None) -> "Config": import core.config as _mod if path is None: path = _mod.DEFAULT_CONFIG_PATH if not path.exists(): return cls() data = tomlkit.loads(path.read_text()) return cls( blog_repo=str(data.get("blog_repo", "")), transart_script=str(data.get("transart_script", "/home/danix/bin/transart.py")), typora_bin=str(data.get("typora_bin", "typora")), )