2024-10-15 00:07:40 +08:00
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
|
|
from . import manager as config_manager
|
|
|
|
|
|
from ..core import app
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SettingsManager:
|
|
|
|
|
|
"""设置管理器
|
|
|
|
|
|
保存、管理多个配置文件管理器
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
ap: app.Application
|
|
|
|
|
|
|
|
|
|
|
|
managers: list[config_manager.ConfigManager] = []
|
|
|
|
|
|
"""配置文件管理器列表"""
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, ap: app.Application) -> None:
|
|
|
|
|
|
self.ap = ap
|
|
|
|
|
|
self.managers = []
|
|
|
|
|
|
|
|
|
|
|
|
async def initialize(self) -> None:
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def register_manager(
|
|
|
|
|
|
self,
|
|
|
|
|
|
name: str,
|
|
|
|
|
|
description: str,
|
|
|
|
|
|
manager: config_manager.ConfigManager,
|
|
|
|
|
|
schema: dict=None,
|
2024-11-10 11:46:41 +08:00
|
|
|
|
doc_link: str=None,
|
2024-10-15 00:07:40 +08:00
|
|
|
|
) -> None:
|
|
|
|
|
|
"""注册配置管理器
|
|
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
|
name (str): 配置管理器名
|
|
|
|
|
|
description (str): 配置管理器描述
|
|
|
|
|
|
manager (ConfigManager): 配置管理器
|
|
|
|
|
|
schema (dict): 配置文件 schema,符合 JSON Schema Draft 7 规范
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
for m in self.managers:
|
|
|
|
|
|
if m.name == name:
|
|
|
|
|
|
raise ValueError(f'配置管理器名 {name} 已存在')
|
|
|
|
|
|
|
|
|
|
|
|
manager.name = name
|
|
|
|
|
|
manager.description = description
|
|
|
|
|
|
manager.schema = schema
|
2024-11-10 11:46:41 +08:00
|
|
|
|
manager.doc_link = doc_link
|
2024-10-15 00:07:40 +08:00
|
|
|
|
self.managers.append(manager)
|
|
|
|
|
|
|
2024-10-16 21:55:55 +08:00
|
|
|
|
def get_manager(self, name: str) -> config_manager.ConfigManager | None:
|
2024-10-15 00:07:40 +08:00
|
|
|
|
"""获取配置管理器
|
|
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
|
name (str): 配置管理器名
|
|
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
ConfigManager: 配置管理器
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
for m in self.managers:
|
|
|
|
|
|
if m.name == name:
|
|
|
|
|
|
return m
|
|
|
|
|
|
|
2024-10-16 21:55:55 +08:00
|
|
|
|
return None
|
2024-10-15 00:07:40 +08:00
|
|
|
|
|
|
|
|
|
|
def get_manager_list(self) -> list[config_manager.ConfigManager]:
|
|
|
|
|
|
"""获取配置管理器列表
|
|
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
list[ConfigManager]: 配置管理器列表
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
return self.managers
|
|
|
|
|
|
|