aboutsummaryrefslogtreecommitdiff
path: root/github/github_branch_protections.py
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-12-28 11:30:03 -0600
committerChristian Cleberg <hello@cleberg.net>2024-12-28 11:30:03 -0600
commit2ee3e7af7b9133da946dff2643505a3d7013b3c0 (patch)
tree30159ba605abc870507902bcbc53bf6733487476 /github/github_branch_protections.py
parentbe74e8cab3bbd8b702adce0127cec2bb48dd7b7b (diff)
downloadaudit-tools-2ee3e7af7b9133da946dff2643505a3d7013b3c0.tar.gz
audit-tools-2ee3e7af7b9133da946dff2643505a3d7013b3c0.tar.bz2
audit-tools-2ee3e7af7b9133da946dff2643505a3d7013b3c0.zip
restructure directories
Diffstat (limited to 'github/github_branch_protections.py')
-rw-r--r--github/github_branch_protections.py78
1 files changed, 0 insertions, 78 deletions
diff --git a/github/github_branch_protections.py b/github/github_branch_protections.py
deleted file mode 100644
index 73c94b6..0000000
--- a/github/github_branch_protections.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""
-Gathers branch protection rules for a repository.
-"""
-
-import requests
-
-GITHUB_TOKEN = 'your_personal_access_token'
-ORGANIZATION = 'your_organization'
-REPOSITORY = 'your_repository'
-TIMEOUT = 30
-
-headers = {
- 'Authorization': f'token {GITHUB_TOKEN}',
- 'Accept': 'application/vnd.github.v3+json'
-}
-
-def get_all_branches(org, repo):
- """
- Get all branches in a repository
- """
- all_branches = []
- page = 1
- while True:
- url = f'https://api.github.com/repos/{org}/{repo}/branches?page={page}&per_page=100'
- response = requests.get(url, headers=headers, timeout=TIMEOUT)
- response.raise_for_status()
- page_branches = response.json()
- if not page_branches:
- break
- all_branches.extend(page_branches)
- page += 1
- return all_branches
-
-def get_branch_protection(org, repo, repo_branch):
- """
- Get branch protection settings
- """
- url = f'https://api.github.com/repos/{org}/{repo}/branches/{repo_branch}/protection'
- response = requests.get(url, headers=headers, timeout=TIMEOUT)
- if response.status_code == 404:
- return None # No protection settings for this branch
- response.raise_for_status()
- return response.json()
-
-def get_repository_rulesets(org, repo):
- """
- Get repository rulesets
- """
- url = f'https://api.github.com/repos/{org}/{repo}/rulesets'
- response = requests.get(url, headers=headers, timeout=TIMEOUT)
- response.raise_for_status()
- return response.json()
-
-if __name__ == '__main__':
- try:
- # Get all branches in the repository
- branches = get_all_branches(ORGANIZATION, REPOSITORY)
- print(f"Total branches in the repository '{REPOSITORY}': {len(branches)}")
-
- # Get protection settings for each branch
- for branch in branches:
- branch_name = branch['name']
- protection_settings = get_branch_protection(ORGANIZATION, REPOSITORY, branch_name)
- print(f"\nBranch: {branch_name}")
- if protection_settings:
- print(f"Protection settings: {protection_settings}")
- else:
- print("No protection settings")
-
- # Get repository rulesets
- rulesets = get_repository_rulesets(ORGANIZATION, REPOSITORY)
- print(f"\nRepository rulesets for '{REPOSITORY}':")
- print(rulesets)
-
- except requests.exceptions.Timeout:
- print("The request timed out")
- except requests.exceptions.RequestException as e:
- print(f"An error occurred: {e}")