Skip to content

Instantly share code, notes, and snippets.

@jhutar
Created September 6, 2024 07:29
Show Gist options
  • Save jhutar/d302454b6ac21debfc3608b7ae69e728 to your computer and use it in GitHub Desktop.
Save jhutar/d302454b6ac21debfc3608b7ae69e728 to your computer and use it in GitHub Desktop.
Counting open, assigned and closed issues in GitHub repository
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import argparse
import requests
import os
def github_repo_issues(repo_path, token):
url = f"https://api.github.com/repos/{repo_path}/issues"
params = {"per_page": 100, "state": "all"}
headers = {
"Authorization": f"Bearer {token}",
"X-GitHub-Api-Version": "2022-11-28",
"Accept": "application/vnd.github+json",
}
while True:
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
data = response.json()
for item in data:
yield item
if "next" not in response.links.keys():
break
url = response.links["next"]["url"]
def main():
parser = argparse.ArgumentParser(
description="A simple script that accepts token and repo-path arguments."
)
parser.add_argument(
"--token",
help="The GitHub API token (defaults to content of GITHUB_TOKEN environment variable).",
default=os.environ.get("GITHUB_TOKEN", None),
)
parser.add_argument(
"--repo-path",
required=True,
help="The path to the repository.",
)
args = parser.parse_args()
print(f"Repo path: {args.repo_path}")
count_open = 0
count_closed = 0
count_assigned = 0
for issue in github_repo_issues(args.repo_path, args.token):
if issue["state"] == "closed":
count_closed += 1
elif issue["state"] == "open":
if issue["assignee"] is None:
count_open += 1
else:
count_assigned += 1
# if issue['assignee'] is None:
# assignee_login = None
# else:
# assignee_login = issue['assignee']['login']
# print(f"Issue: {issue['number']} - {issue['state']} - {assignee_login} - {issue['title']}")
print(f"Issues open/assigned/closed: {count_open}/{count_assigned}/{count_closed}")
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment