Spaces:
Sleeping
Sleeping
| # src/command_handler.py | |
| import argparse # 导入argparse库,用于处理命令行参数解析 | |
| class CommandHandler: | |
| def __init__(self, github_client, subscription_manager, report_generator): | |
| # 初始化CommandHandler,接收GitHub客户端、订阅管理器和报告生成器 | |
| self.github_client = github_client | |
| self.subscription_manager = subscription_manager | |
| self.report_generator = report_generator | |
| self.parser = self.create_parser() # 创建命令行解析器 | |
| def create_parser(self): | |
| # 创建并配置命令行解析器 | |
| parser = argparse.ArgumentParser( | |
| description='GitHub Sentinel Command Line Interface', | |
| formatter_class=argparse.RawTextHelpFormatter | |
| ) | |
| subparsers = parser.add_subparsers(title='Commands', dest='command') | |
| # 添加订阅命令 | |
| parser_add = subparsers.add_parser('add', help='Add a subscription') | |
| parser_add.add_argument('repo', type=str, help='The repository to subscribe to (e.g., owner/repo)') | |
| parser_add.set_defaults(func=self.add_subscription) | |
| # 删除订阅命令 | |
| parser_remove = subparsers.add_parser('remove', help='Remove a subscription') | |
| parser_remove.add_argument('repo', type=str, help='The repository to unsubscribe from (e.g., owner/repo)') | |
| parser_remove.set_defaults(func=self.remove_subscription) | |
| # 列出所有订阅命令 | |
| parser_list = subparsers.add_parser('list', help='List all subscriptions') | |
| parser_list.set_defaults(func=self.list_subscriptions) | |
| # 导出每日进展命令 | |
| parser_export = subparsers.add_parser('export', help='Export daily progress') | |
| parser_export.add_argument('repo', type=str, help='The repository to export progress from (e.g., owner/repo)') | |
| parser_export.set_defaults(func=self.export_daily_progress) | |
| # 导出特定日期范围进展命令 | |
| parser_export_range = subparsers.add_parser('export-range', help='Export progress over a range of dates') | |
| parser_export_range.add_argument('repo', type=str, help='The repository to export progress from (e.g., owner/repo)') | |
| parser_export_range.add_argument('days', type=int, help='The number of days to export progress for') | |
| parser_export_range.set_defaults(func=self.export_progress_by_date_range) | |
| # 生成日报命令 | |
| parser_generate = subparsers.add_parser('generate', help='Generate daily report from markdown file') | |
| parser_generate.add_argument('file', type=str, help='The markdown file to generate report from') | |
| parser_generate.set_defaults(func=self.generate_daily_report) | |
| # 帮助命令 | |
| parser_help = subparsers.add_parser('help', help='Show help message') | |
| parser_help.set_defaults(func=self.print_help) | |
| return parser # 返回配置好的解析器 | |
| # 下面是各种命令对应的方法实现,每个方法都使用了相应的管理器来执行实际操作,并输出结果信息 | |
| def add_subscription(self, args): | |
| self.subscription_manager.add_subscription(args.repo) | |
| print(f"Added subscription for repository: {args.repo}") | |
| def remove_subscription(self, args): | |
| self.subscription_manager.remove_subscription(args.repo) | |
| print(f"Removed subscription for repository: {args.repo}") | |
| def list_subscriptions(self, args): | |
| subscriptions = self.subscription_manager.list_subscriptions() | |
| print("Current subscriptions:") | |
| for sub in subscriptions: | |
| print(f" - {sub}") | |
| def export_daily_progress(self, args): | |
| self.github_client.export_daily_progress(args.repo) | |
| print(f"Exported daily progress for repository: {args.repo}") | |
| def export_progress_by_date_range(self, args): | |
| self.github_client.export_progress_by_date_range(args.repo, days=args.days) | |
| print(f"Exported progress for the last {args.days} days for repository: {args.repo}") | |
| def generate_daily_report(self, args): | |
| self.report_generator.generate_github_report(args.file) | |
| print(f"Generated daily report from file: {args.file}") | |
| def print_help(self, args=None): | |
| self.parser.print_help() # 输出帮助信息 | |