feat(cli): 实现 nyahome config 命令

允许通过 nyahome 终端命令修改设置
同时再次调整数据库有关的内部常量的位置
This commit is contained in:
2026-06-06 10:04:26 +08:00
parent 82723038c3
commit ad3bafcd35
7 changed files with 143 additions and 11 deletions
+46
View File
@@ -15,6 +15,11 @@ T = TypeVar("T")
class ConfigManager:
"""
ConfigManager 携带一个初始化的 Config 实例。在 Config 初始化时,所有的默认设置键的值就都已经加载。
因此,如果不 load_configConfigManager 也将持有一套默认设置。
"""
def __init__(self) -> None:
CONFIG_PATH.parent.mkdir(exist_ok=True)
self._config = Config()
@@ -76,6 +81,47 @@ class ConfigManager:
"""
return getattr(self._config, key, default) # type: ignore[return-value]
def set(self, key: str, value: T) -> None:
"""
设置配置项。
Args:
key: 配置键名
value: 配置键的新值,可以是(且仅支持)字符串、整型以及列表。
"""
try:
old_value = self.get(key)
except AttributeError as e:
raise e
match old_value:
case str():
new_value = str(value)
case int():
new_value = int(value)
case bool():
new_value = bool(value)
case list():
new_value = [x for x in value]
case _:
raise TypeError(f"不支持 {type(old_value).__name__} 类型的设置项。({key}")
setattr(self._config, key, new_value)
def reset(self, key: str) -> None:
"""
将配置项恢复至默认值。
Args:
key: 配置键名
"""
ci = Config()
try:
default_value = getattr(ci, key)
except AttributeError as e:
raise e
setattr(self._config, key, default_value)
def get_config(self) -> dict[str, Any]:
config = {}
for attr in dir(self._config):