alkaid_release_platform/database/common.py
ekko.bao 0a0f6a6054 初次创建仓库提交代码
1. 已经构建好了架子了。
2. 添加了示例的插件
2025-04-21 06:37:06 +00:00

54 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys, os
from typing import Any
from pathlib import Path
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from core.logger import get_logger
log = get_logger()
sys.path.append(os.path.join(os.path.dirname(__file__)))
from .base import BaseConfig
from .options import ReleaseOptions
import dirs
def config_expand(instance: Any):
"""配置展开:
1. 将DirAlias中的alias展开为实际路径
2. 将BaseConfig中的配置展开 将字符串中的{key}替换为Args._dict[key]
3. 如果为多层嵌套,则递归展开
Returns:
List: 展开后的列表
"""
_ret = []
if isinstance(instance, str):
# 将字符串中的{key}替换为ReleaseOptions._dict[key] 实现动态路径
instance = dirs.str_format(instance)
# 尝试从DirAlias中获取instance的值
value = dirs.DirAlias.get(instance, instance)
if value == instance:
# 如果value和instance相同说明其已经不可以再拓展了 已经是最终路径了
_ret.append(instance)
else:
# 如果value和instance不同说明其还可以继续拓展
_ret.extend(config_expand(value))
elif isinstance(instance, list):
for item in instance:
_ret.extend(config_expand(item))
elif isinstance(instance, dict):
for _, value in instance.items():
_ret.extend(config_expand(value))
elif isinstance(instance, BaseConfig):
if instance._list:
_ret.extend(config_expand(instance._list))
elif instance._dict:
_ret.extend(config_expand(instance._dict))
else:
raise ValueError(f"Invalid config type: {type(instance)}")
#log.info(f"config_expand: {instance.__class__.__name__} {_ret}")
return sorted(set(_ret))
def check_file_exists(item: str) -> bool:
"""检查文件是否存在
"""
file = Path(ReleaseOptions.AlkaidRootPath) / item
if not file.exists():
return False
return True