Files
REPO_TEST/main_test.py
2025-07-23 20:41:13 +08:00

75 lines
2.5 KiB
Python

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# 主执行文件
import os
import sys
import argparse
import platform
import logging
from common.logger import get_logger
from common.config import ConfigManager, DEFAULT_REPO_CONFIGS
from repodata.checker import RepoChecker
logger = get_logger("main")
def detect_system_version():
# 示例:根据实际需求完善
sys_info = platform.uname()
# 假设根据发行版和版本号拼接配置文件名
distro = getattr(sys_info, "system", "unknown").lower()
version = getattr(sys_info, "release", "unknown")
config_path = f"config/{distro}_{version}.json"
if os.path.exists(config_path):
return config_path
# 默认配置
return "config/repo_configs.json"
def parse_arguments():
parser = argparse.ArgumentParser(description='仓库测试检查工具')
parser.add_argument('--config', type=str, help='配置文件路径')
parser.add_argument('--output-dir', type=str, default='./results', help='输出目录')
parser.add_argument('--max-workers', type=int, default=5, help='最大并行检查线程数')
parser.add_argument('--product', type=str, help='仅检查指定产品')
parser.add_argument('--arch', type=str, help='仅检查指定架构')
parser.add_argument('--diff', nargs=2, metavar=('A', 'B'), help='对比两个仓库(名称或链接)')
parser.add_argument('--verbose', action='store_true', help='显示详细日志')
return parser.parse_args()
def main():
args = parse_arguments()
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
# 配置文件选择逻辑
if args.config:
config_path = args.config
else:
config_path = detect_system_version()
logger.info(f"自动检测配置文件: {config_path}")
# 加载配置
if os.path.exists(config_path):
repo_configs = ConfigManager.load_json_config(config_path)
else:
logger.warning("未找到配置文件,使用默认配置")
repo_configs = DEFAULT_REPO_CONFIGS
# 过滤配置
# ...根据 args.product 和 args.arch 过滤 repo_configs...
# diff 模式
if args.diff:
repo_a, repo_b = args.diff
# ...实现仓库对比逻辑...
logger.info(f"对比仓库: {repo_a} vs {repo_b}")
# diff 结果输出
return 0
# 常规检查模式
checker = RepoChecker(args.output_dir)
# ...执行检查逻辑...
return 0
if __name__ == "__main__":
sys.exit(main())