#!/usr/bin/env python3
"""检查PR是否有至少N个APPROVED审批。

用法: python3 check_pr_approval.py <token> <repo> <pr_number> <min_approval>
返回: 打印 "approved" 或 "pending"
"""

import json
import sys
import urllib.request


def main():
    if len(sys.argv) != 5:
        print("pending")
        return

    token = sys.argv[1]
    repo = sys.argv[2]
    pr_number = sys.argv[3]
    min_approval = int(sys.argv[4])

    api_url = f"https://git.xiaoxiajianji.com/api/v1/repos/{repo}/pulls/{pr_number}/reviews"
    req = urllib.request.Request(api_url, headers={"Authorization": f"token {token}"})

    try:
        with urllib.request.urlopen(req, timeout=30) as resp:
            reviews = json.loads(resp.read().decode())
    except Exception:
        print("pending")
        return

    # 统计APPROVED的人数（去重，同一人多次审批只算一次）
    approvers = set()
    for r in reviews:
        if r.get("state") == "APPROVED":
            approvers.add(r.get("user", {}).get("login", ""))

    if len(approvers) >= min_approval:
        print(f"approved ({len(approvers)})")
    else:
        print(f"pending ({len(approvers)})")


if __name__ == "__main__":
    main()
