summaryrefslogtreecommitdiffstats
path: root/core/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'core/config.py')
-rw-r--r--core/config.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/core/config.py b/core/config.py
new file mode 100644
index 0000000..1f400b4
--- /dev/null
+++ b/core/config.py
@@ -0,0 +1,40 @@
+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")),
+ )