✨ feat: 完成env重新设计
This commit is contained in:
50
aide-program/aide/env/registry.py
vendored
Normal file
50
aide-program/aide/env/registry.py
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
"""模块注册表。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from aide.env.modules.base import BaseModule, ModuleInfo
|
||||
|
||||
|
||||
class ModuleRegistry:
|
||||
"""模块注册表,管理所有可用的环境检测模块。"""
|
||||
|
||||
_modules: dict[str, BaseModule] = {}
|
||||
|
||||
@classmethod
|
||||
def register(cls, module: BaseModule) -> None:
|
||||
"""注册模块。"""
|
||||
cls._modules[module.info.name] = module
|
||||
|
||||
@classmethod
|
||||
def get(cls, name: str) -> BaseModule | None:
|
||||
"""获取指定模块。"""
|
||||
return cls._modules.get(name)
|
||||
|
||||
@classmethod
|
||||
def all(cls) -> dict[str, BaseModule]:
|
||||
"""获取所有已注册模块。"""
|
||||
return cls._modules.copy()
|
||||
|
||||
@classmethod
|
||||
def names(cls) -> list[str]:
|
||||
"""获取所有模块名称。"""
|
||||
return list(cls._modules.keys())
|
||||
|
||||
@classmethod
|
||||
def list_info(cls) -> list[ModuleInfo]:
|
||||
"""获取所有模块的元信息。"""
|
||||
return [m.info for m in cls._modules.values()]
|
||||
|
||||
@classmethod
|
||||
def clear(cls) -> None:
|
||||
"""清空注册表(用于测试)。"""
|
||||
cls._modules.clear()
|
||||
|
||||
|
||||
def register_builtin_modules() -> None:
|
||||
"""注册内置模块。"""
|
||||
from aide.env.modules import python, uv, venv, requirements
|
||||
|
||||
for mod in [python, uv, venv, requirements]:
|
||||
if hasattr(mod, "module"):
|
||||
ModuleRegistry.register(mod.module)
|
||||
Reference in New Issue
Block a user