add github reviewers script

This commit is contained in:
Caleb Webber 2024-04-10 13:07:36 -05:00
parent b969ad8689
commit 9eb116daee

67
github_reviewers.py Normal file
View file

@ -0,0 +1,67 @@
import requests
from datetime import datetime, timedelta
def fetch_pull_requests(repo_name, auth_token):
base_url = f"https://api.github.com/repos/{repo_name}/pulls"
# Get the date one month ago from today
one_month_ago = datetime.now() - timedelta(days=90)
since_date = one_month_ago.strftime("%Y-%m-%dT%H:%M:%SZ")
headers = {
"Authorization": f"token {auth_token}"
}
params = {
"state": "all",
"since": since_date
}
response = requests.get(base_url, headers=headers, params=params)
if response.status_code == 200:
prs = response.json()
print(prs)
return prs
else:
print(f"Failed to fetch pull requests: {response.status_code}")
return None
def fetch_reviewers(pr_url, auth_token, reviews):
headers = {
"Authorization": f"token {auth_token}"
}
response = requests.get(f"{pr_url}/reviews", headers=headers)
if response.status_code == 200:
pr_data = response.json()
# Get the list of reviewers
for reviewer in pr_data:
login = reviewer["user"]["login"]
if reviews.get(login):
reviews[login] += 1
else:
reviews[login] = 1
return None
else:
print(f"Failed to fetch reviewers for PR {pr_url}: {response.status_code}")
return None
def count_reviewers(repo_name, auth_token):
pull_requests = fetch_pull_requests(repo_name, auth_token)
if pull_requests:
total_reviewers = {}
for pr in pull_requests:
pr_url = pr["url"]
print(f"checking {pr_url}")
fetch_reviewers(pr_url, auth_token, total_reviewers)
return [pull_requests, total_reviewers]
else:
return [None, None]
if __name__ == "__main__":
# Replace these with your repository name and GitHub token
repository_name = "owner/repo"
github_token = "yourtokenhere"
prs, total_reviewers = count_reviewers(repository_name, github_token)
print(f"Unique reviewers across all pull requests: {total_reviewers}")
print(f"Total number of unique reviewers across all pull requests: {len(total_reviewers)}")