blob: 741dfad5c6abf3cf465462bfe439ebf759b13a19 (
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
|
from __future__ import annotations
from dataclasses import dataclass, field
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 = DEFAULT_CONFIG_PATH) -> None:
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 = DEFAULT_CONFIG_PATH) -> "Config":
if not path.exists():
return cls()
data = tomlkit.loads(path.read_text())
defaults = cls()
return cls(
blog_repo=str(data.get("blog_repo", defaults.blog_repo)),
transart_script=str(data.get("transart_script", defaults.transart_script)),
typora_bin=str(data.get("typora_bin", defaults.typora_bin)),
)
|