"""命令行工具:从 Gitea 获取最新项目。""" import argparse import os import sys from gitea_client import GiteaClient def main(): parser = argparse.ArgumentParser(description='从 Gitea 获取最新的项目列表') parser.add_argument('--base-url', default=os.environ.get('GITEA_BASE_URL'), help='Gitea 服务器地址,如 https://gitea.example.com') parser.add_argument('--owner', required=True, help='用户名或组织名') parser.add_argument('--token', default=os.environ.get('GITEA_TOKEN'), help='访问令牌(私有仓库需要)') parser.add_argument('--limit', type=int, default=10, help='返回数量,默认 10') parser.add_argument('--org', action='store_true', help='将 owner 视为组织') args = parser.parse_args() if not args.base_url: print('错误:请通过 --base-url 或环境变量 GITEA_BASE_URL 指定 Gitea 地址', file=sys.stderr) sys.exit(1) client = GiteaClient(args.base_url, args.token) try: if args.org: repos = client.get_org_latest_repos(args.owner, args.limit) else: repos = client.get_latest_repos(args.owner, args.limit) except Exception as e: print(f'获取仓库失败:{e}', file=sys.stderr) sys.exit(1) if not repos: print('未找到仓库。') return print(f'\n{args.owner} 的最新 {len(repos)} 个项目:\n') for i, repo in enumerate(repos, 1): print(f'{i}. {repo.get("full_name")}') print(f' 描述: {repo.get("description") or "(无)"}') print(f' 更新: {repo.get("updated_at")}') print(f' 链接: {repo.get("html_url")}') print() if __name__ == '__main__': main()