#!/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())