import os import requests from typing import Dict, List GITEA_API_URL = os.getenv("GITEA_API_URL") GITEA_TOKEN = os.getenv("GITEA_TOKEN") HEADERS = {"Authorization": f"token {GITEA_TOKEN}"} def apply_branch_protection(repo_name: str, rules: Dict): url = f"{GITEA_API_URL}/repos/{repo_name}/branches/main/protection" response = requests.post(url, json=rules, headers=HEADERS) if response.status_code == 200: print(f"✅ Branch protection applied to {repo_name}") else: print(f"❌ Failed to apply protection to {repo_name}: {response.text}") def main(): repos = { "hermes-agent": { "required_pull_request_reviews": {"required_approving_review_count": 1}, "restrictions": {"block_force_push": True, "block_deletions": True}, "required_status_checks": {"strict": True, "contexts": ["ci/test", "ci/build"]}, "dismiss_stale_reviews": True, }, "the-nexus": { "required_pull_request_reviews": {"required_approving_review_count": 1}, "restrictions": {"block_force_push": True, "block_deletions": True}, "dismiss_stale_reviews": True, }, "timmy-home": { "required_pull_request_reviews": {"required_approving_review_count": 1}, "restrictions": {"block_force_push": True, "block_deletions": True}, "dismiss_stale_reviews": True, }, "timmy-config": { "required_pull_request_reviews": {"required_approving_review_count": 1}, "restrictions": {"block_force_push": True, "block_deletions": True}, "dismiss_stale_reviews": True, }, } for repo, rules in repos.items(): apply_branch_protection(repo, rules) if __name__ == "__main__": main()