mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-26 00:53:54 +08:00
update:优化配置及文档
This commit is contained in:
@@ -1,53 +1,33 @@
|
||||
import os
|
||||
from collections.abc import Mapping
|
||||
from config import logger
|
||||
from config.config_loader import read_config, get_project_dir, load_config
|
||||
|
||||
TAG = __name__
|
||||
logger = logger.setup_logging()
|
||||
|
||||
default_config_file = "config.yaml"
|
||||
|
||||
|
||||
def find_missing_keys(new_config, old_config, parent_key=""):
|
||||
"""
|
||||
递归查找缺失的配置项
|
||||
返回格式:[缺失配置路径]
|
||||
"""
|
||||
missing_keys = []
|
||||
|
||||
if not isinstance(new_config, Mapping):
|
||||
return missing_keys
|
||||
|
||||
for key, value in new_config.items():
|
||||
# 构建当前配置路径
|
||||
full_path = f"{parent_key}.{key}" if parent_key else key
|
||||
|
||||
# 检查键是否存在
|
||||
if key not in old_config:
|
||||
missing_keys.append(full_path)
|
||||
continue
|
||||
|
||||
# 递归检查嵌套字典
|
||||
if isinstance(value, Mapping):
|
||||
sub_missing = find_missing_keys(
|
||||
value, old_config[key], parent_key=full_path
|
||||
)
|
||||
missing_keys.extend(sub_missing)
|
||||
return missing_keys
|
||||
config_file_valid = False
|
||||
|
||||
|
||||
def check_config_file():
|
||||
global config_file_valid
|
||||
if config_file_valid:
|
||||
return
|
||||
"""
|
||||
简化的配置检查,仅提示用户配置文件的使用情况
|
||||
"""
|
||||
custom_config_file = get_project_dir() + "data/." + default_config_file
|
||||
if not os.path.exists(custom_config_file):
|
||||
logger.bind(tag=TAG).info("提示: 使用默认配置文件。如需自定义配置,请创建 data/.config.yaml 文件")
|
||||
else:
|
||||
logger.bind(tag=TAG).info(f"提示: 使用自定义配置文件 data/.config.yaml,配置将覆盖默认值")
|
||||
|
||||
raise FileNotFoundError(
|
||||
"找不到data/.config.yaml文件,请按教程确认该配置文件是否存在"
|
||||
)
|
||||
|
||||
# 检查是否从API读取配置
|
||||
config = load_config()
|
||||
if config.get("read_config_from_api", False):
|
||||
logger.bind(tag=TAG).info("提示: 从API获取配置")
|
||||
print("从API读取配置")
|
||||
old_config_origin = read_config(custom_config_file)
|
||||
if old_config_origin.get("selected_module") is not None:
|
||||
error_msg = "您的配置文件好像既包含智控台的配置又包含本地配置:\n"
|
||||
error_msg += "\n建议您:\n"
|
||||
error_msg += "1、将根目录的config_from_api.yaml文件复制到data下,重命名为.config.yaml\n"
|
||||
error_msg += "2、按教程配置好接口地址和密钥\n"
|
||||
raise ValueError(error_msg)
|
||||
config_file_valid = True
|
||||
|
||||
Reference in New Issue
Block a user