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