import json import os from typing import Dict, Any import sys class TBConfig: """TeamBition 配置加载器,指向 tb/tb_config.json""" def __init__(self, config_path: str = None): if config_path is None: base_path = os.path.dirname(os.path.abspath(__file__)) config_path = os.path.join(base_path, "tb_config.json") self.config_path = config_path self.config = self._load_config() def _load_config(self) -> Dict[str, Any]: if os.path.exists(self.config_path): with open(self.config_path, "r", encoding="utf-8") as f: return json.load(f) return {} def get(self, key: str, default=None): keys = key.split(".") value = self.config for k in keys: if isinstance(value, dict) and k in value: value = value[k] else: return default return value def get_teambition_config(self) -> Dict[str, Any]: return self.config.get("teambition", {}) def get_export_config(self) -> Dict[str, Any]: return self.config.get("export", {}) def get_scheduler_config(self) -> Dict[str, Any]: return self.config.get("scheduler", {}) def get_output_config(self) -> Dict[str, Any]: return self.config.get("output", {}) def load(self) -> Dict[str, Any]: self.config = self._load_config() return self.config def save(self, new_config: Dict[str, Any]): self.config = new_config with open(self.config_path, "w", encoding="utf-8") as f: json.dump(self.config, f, indent=2, ensure_ascii=False)