Files

51 lines
1.8 KiB
Python

"""命令行工具:从 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()