51 lines
1.8 KiB
Python
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()
|