mirror of
https://github.com/langbot-app/LangBot.git
synced 2025-11-25 19:37:36 +08:00
76 lines
1.9 KiB
Python
76 lines
1.9 KiB
Python
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,
|
||
doc_link: str=None,
|
||
) -> 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
|
||
manager.doc_link = doc_link
|
||
self.managers.append(manager)
|
||
|
||
def get_manager(self, name: str) -> config_manager.ConfigManager | None:
|
||
"""获取配置管理器
|
||
|
||
Args:
|
||
name (str): 配置管理器名
|
||
|
||
Returns:
|
||
ConfigManager: 配置管理器
|
||
"""
|
||
|
||
for m in self.managers:
|
||
if m.name == name:
|
||
return m
|
||
|
||
return None
|
||
|
||
def get_manager_list(self) -> list[config_manager.ConfigManager]:
|
||
"""获取配置管理器列表
|
||
|
||
Returns:
|
||
list[ConfigManager]: 配置管理器列表
|
||
"""
|
||
|
||
return self.managers
|
||
|