summaryrefslogtreecommitdiffstats
path: root/core/config.py
blob: 1f400b42793f4bc5fd33335f0891ebcc61d63949 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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")),
        )