config_cli.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/env python3
  2. """
  3. 配置管理命令行工具
  4. 提供配置检查、验证、文档生成等功能
  5. """
  6. import argparse
  7. import sys
  8. from core.utils.config_health_check import run_health_check
  9. from core.utils.config_documentation import generate_config_docs
  10. from core.utils.config_manager import get_config_manager
  11. def list_platforms():
  12. """列出所有平台配置"""
  13. config_manager = get_config_manager()
  14. platforms = config_manager.list_platforms()
  15. print("平台配置列表:")
  16. print("-" * 30)
  17. for platform in platforms:
  18. print(f" - {platform}")
  19. print(f"\n总计: {len(platforms)} 个平台")
  20. def show_platform_config(platform_name):
  21. """显示特定平台的配置详情"""
  22. config_manager = get_config_manager()
  23. try:
  24. config = config_manager.get_platform_config(platform_name)
  25. print(f"平台 '{platform_name}' 配置详情:")
  26. print("-" * 30)
  27. print(f"平台名称: {config.platform}")
  28. print(f"模式: {config.mode}")
  29. print(f"URL: {config.url}")
  30. print(f"方法: {config.method}")
  31. print(f"请求超时: {config.request_timeout}")
  32. print(f"最大重试次数: {config.max_retries}")
  33. print(f"循环次数: {config.loop_times}")
  34. print(f"飞书表格ID: {config.feishu_sheetid}")
  35. if config.request_body:
  36. print("请求体:")
  37. for key, value in config.request_body.items():
  38. print(f" {key}: {value}")
  39. if config.response_parse:
  40. print("响应解析配置:")
  41. for key, value in config.response_parse.items():
  42. print(f" {key}: {value}")
  43. except Exception as e:
  44. print(f"获取平台配置失败: {e}")
  45. sys.exit(1)
  46. def show_stats():
  47. """显示配置统计信息"""
  48. config_manager = get_config_manager()
  49. try:
  50. stats = config_manager.get_config_stats()
  51. print("配置统计信息:")
  52. print("-" * 30)
  53. print(f"平台数量: {stats['total_platforms']}")
  54. print(f"运行环境: {stats['env']}")
  55. print(f"配置文件: {stats['config_file']}")
  56. print(f"最后修改时间: {stats['last_modified']}")
  57. except Exception as e:
  58. print(f"获取统计信息失败: {e}")
  59. sys.exit(1)
  60. def main():
  61. parser = argparse.ArgumentParser(description="AutoScraperX 配置管理工具")
  62. subparsers = parser.add_subparsers(dest="command", help="可用命令")
  63. # 健康检查命令
  64. subparsers.add_parser("check", help="检查配置健康状态")
  65. # 文档生成命令
  66. subparsers.add_parser("docs", help="生成配置文档")
  67. # 列出平台命令
  68. subparsers.add_parser("list", help="列出所有平台配置")
  69. # 显示统计信息命令
  70. subparsers.add_parser("stats", help="显示配置统计信息")
  71. # 显示平台配置详情命令
  72. show_parser = subparsers.add_parser("show", help="显示平台配置详情")
  73. show_parser.add_argument("platform", help="平台名称")
  74. args = parser.parse_args()
  75. if args.command == "check":
  76. result = run_health_check()
  77. sys.exit(0 if result["success"] else 1)
  78. elif args.command == "docs":
  79. filepath = generate_config_docs()
  80. print(f"配置文档已生成: {filepath}")
  81. elif args.command == "list":
  82. list_platforms()
  83. elif args.command == "stats":
  84. show_stats()
  85. elif args.command == "show":
  86. show_platform_config(args.platform)
  87. else:
  88. parser.print_help()
  89. if __name__ == "__main__":
  90. main()