#!/usr/bin/env python3 """ Dev Workflow - 开发工作流工具 提供多种工作模式和统计功能 """ import sys import argparse from pathlib import Path # 添加当前目录到路径 sys.path.insert(0, str(Path(__file__).parent)) from stats import record_event, get_stats, format_stats_report, clear_stats def cmd_stats(args): """stats 命令处理函数""" # 记录查看统计的事件 record_event( "stats_viewed", mode="cross", metadata={"filter_mode": args.mode} ) # 获取统计数据 stats = get_stats(mode=args.mode) # 输出报告 report = format_stats_report(stats) print(report) return 0 def cmd_record(args): """record 命令处理函数 - 用于测试""" success = record_event( args.event_type, mode=args.mode, metadata={"description": args.description} if args.description else None ) if success: print(f"✓ 事件已记录: {args.event_type}") return 0 else: print("✗ 记录事件失败") return 1 def cmd_clear(args): """clear 命令处理函数""" if not args.confirm: print("警告: 此操作将清空所有统计数据!") print("使用 --confirm 参数确认清空") return 1 success = clear_stats(confirm=True) if success: print("✓ 统计数据已清空") return 0 else: print("✗ 清空失败") return 1 def main(): """主函数""" parser = argparse.ArgumentParser( description="Dev Workflow - 开发工作流工具", formatter_class=argparse.RawDescriptionHelpFormatter ) subparsers = parser.add_subparsers(dest="command", help="可用命令") # stats 命令 stats_parser = subparsers.add_parser("stats", help="显示统计报告") stats_parser.add_argument( "--mode", "-m", help="筛选特定模式(如 cross, normal)" ) stats_parser.set_defaults(func=cmd_stats) # record 命令(用于测试) record_parser = subparsers.add_parser("record", help="记录事件(测试用)") record_parser.add_argument( "event_type", help="事件类型" ) record_parser.add_argument( "--mode", "-m", default="cross", help="工作模式(默认: cross)" ) record_parser.add_argument( "--description", "-d", help="事件描述" ) record_parser.set_defaults(func=cmd_record) # clear 命令 clear_parser = subparsers.add_parser("clear", help="清空统计数据") clear_parser.add_argument( "--confirm", action="store_true", help="确认清空" ) clear_parser.set_defaults(func=cmd_clear) # 解析参数 args = parser.parse_args() # 如果没有指定命令,默认显示 stats if not args.command: args.command = "stats" args.func = cmd_stats args.mode = None # 执行命令 try: return args.func(args) except AttributeError: parser.print_help() return 1 except KeyboardInterrupt: print("\n操作已取消") return 130 except Exception as e: print(f"错误: {e}", file=sys.stderr) return 1 if __name__ == "__main__": sys.exit(main())