Skip to content

Commit

Permalink
Merge pull request #67 from lhein/fixRoadMap
Browse files Browse the repository at this point in the history
fixing the roadmap
  • Loading branch information
lhein authored Nov 19, 2023
2 parents eede771 + 390ec4a commit 553e3d7
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 91 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/hugo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified

- name: Install Python dependencies
run: pip3 install requests
run: pip3 install PyGithub

- name: Generate Releases and Milestones
run: python3 getGithubData.py $username $password
Expand Down
151 changes: 61 additions & 90 deletions getGithubData.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
#!/usr/bin/python

import sys
from github import Github
from github import Auth

import datetime
import json
import requests
import subprocess as sb
from requests.auth import HTTPBasicAuth

def generate_new_entry(filename, date, title, content, url):
with open('content/timeline/generated-' + filename, 'a') as f:
Expand All @@ -17,11 +15,16 @@ def generate_new_entry(filename, date, title, content, url):
f.write('---\n')
f.write(content[0:250] + '\n\n[Read more](' + url + ')')

def generate_new_milestone(milestone, issues, milestoneNo):
if (len(issues) > 0):
with open('content/roadmap/generated-milestone-' + milestone + '.md', 'a') as f:
def generate_new_milestone(milestone):
issues = repo.get_issues(milestone=mstone, state='all')
msTitle = mstone.title
msNumber = str(mstone.number)
print("Total Issue Count: " + str(issues.totalCount) + " / Open Issues: " + str(milestone.open_issues))

if (issues.totalCount > 0):
with open('content/roadmap/generated-milestone-' + msTitle + '.md', 'a') as f:
f.write('---\n')
f.write('title: Milestone ' + milestone + '\n')
f.write('title: Milestone ' + msTitle + '\n')
f.write('draft: false\n')
f.write('type: "roadmap"\n')
f.write('date: ')
Expand All @@ -32,114 +35,82 @@ def generate_new_milestone(milestone, issues, milestoneNo):
f.write(str(datetime.datetime.now().day))
f.write('\n')
f.write('---\n')
f.write('Milestone **![' + milestone + '](https://github.com/KaotoIO/kaoto-next/milestone/' + milestoneNo + ')** ')
f.write('Milestone **[' + msTitle + '](https://github.com/KaotoIO/kaoto-next/milestone/' + msNumber + ')** ')

open_issues = 0;
for issue in issues:
if (issue['state'] != 'closed'):
open_issues += 1;

progress = str(round(100*(len(issues) - open_issues)/len(issues)));
f.write('![](https://geps.dev/progress/');
f.write(progress);
f.write('?dangerColor=800000&warningColor=ff9900&successColor=006600)\n\n');
progress = str(round(100*(issues.totalCount - milestone.open_issues)/issues.totalCount))
f.write('![](https://geps.dev/progress/')
f.write(progress)
f.write('?dangerColor=800000&warningColor=ff9900&successColor=006600)\n\n')

for issue in issues:
f.write(' - *')
f.write(issue['state'])
f.write(issue.state)
f.write('* ')
if (issue['state'] == 'closed'):
if (issue.state == 'closed'):
f.write('~~')
f.write('[')
f.write(issue['title'])
f.write(issue.title)
f.write('](')
f.write(issue['html_url'])
f.write(issue.html_url)
f.write(')')
if (issue['state'] == 'closed'):
if (issue.state == 'closed'):
f.write('~~')
f.write('\n')


authentication = HTTPBasicAuth( sys.argv[1], sys.argv[2])
stargazers = []
mergedprs = 0
forks = 0
contributors = []
milestones = {}
milestoneNumbers = {}

repositories = requests.get('https://api.github.com/orgs/KaotoIO/repos', auth = authentication)
# using an access token
auth = Auth.Login(sys.argv[1], sys.argv[2])

# Public Web Github
g = Github(auth=auth)
g.get_user().login
org = g.get_organization("KaotoIO")
org.login

repositories = org.get_repos()
print("Processing repositories...")
for repo in repositories.json():
print("Processing " + repo['full_name'])
for repo in repositories:
print("Processing " + repo.name)

# we are atm only interested in releases and milestones of Kaoto-Next
if (repo['full_name'] == 'KaotoIO/kaoto-next'):
if repo.name == "kaoto-next":

#releases
data = requests.get('https://api.github.com/repos/' + repo['full_name'] + '/releases', auth = authentication)
for release in data.json():
if (not (release['published_at'] is None)):
generate_new_entry('release-' + release['published_at'] + '.md', release['published_at'], release['name'], release['body'], release['html_url'])
releases = repo.get_releases()
for release in releases:
if (not (release.published_at is None)):
generate_new_entry('release-' + str(release.published_at) + '.md', str(release.published_at), release.title, release.body, release.html_url)

#milestones
data = requests.get('https://api.github.com/repos/' + repo['full_name'] + '/milestones', auth = authentication)
for milestone in data.json():
if (milestone['state'] == "open"):
msTitle = milestone['title']
msNumber = str(milestone['number'])
if msTitle not in milestones:
milestones[msTitle] = []
if msTitle not in milestoneNumbers:
milestoneNumbers[msTitle] = msNumber
issues = requests.get('https://api.github.com/repos/' + repo['full_name'] + '/issues?state=all&milestone=' + msNumber, auth = authentication)
for issue in issues.json():
milestones[msTitle].append(issue)

# but we want to aggregate the remaining stats from all repos in the org
milestones = repo.get_milestones()
for mstone in milestones:
if mstone.state == "open":
generate_new_milestone(mstone)

# but we want to aggregate the remaining stats from all repos in the org

# followers
data = requests.get('https://api.github.com/repos/' + repo['full_name'] + '/stargazers', auth = authentication)
for stargazer in data.json():
if stargazer['login'] not in stargazers:
stargazers.append(stargazer['login'])
gazers = repo.get_stargazers()
for stargazer in gazers:
if stargazer.login not in stargazers:
stargazers.append(stargazer.login)

# merged pr
data = requests.get('https://api.github.com/search/issues?q=repo:' + repo['full_name'] + '+is:pr+is:merged', auth = authentication)
mergedprs = mergedprs + data.json()['total_count']
PRs = repo.get_pulls(state='closed')
mergedprs = mergedprs + PRs.totalCount

# forks
data = requests.get('https://api.github.com/repos/' + repo['full_name'] + '/forks?per_page=100', auth = authentication)
forks = forks + len(data.json())

# contributors
data = requests.get('https://api.github.com/repos/' + repo['full_name'] + '/contributors', auth = authentication)
for contributor in data.json():
if contributor['id'] not in contributors:
contributors.append(contributor['id'])

for milestone, issues in milestones.items():
print("Processing Milestone " + milestone)
msNumber = milestoneNumbers[milestone]
print("Milestone # " + msNumber)
generate_new_milestone(milestone, issues, msNumber)
repoForks = repo.get_forks()
forks = forks + repoForks.totalCount

with open('content/timeline/_index.md', 'a') as f:
f.write('\n\n ## Some Cross-Project statistics')
f.write('\n\nForks: ' + str(forks))
f.write('\n\nMerged Pull Requests: ' + str(mergedprs))
f.write('\n\nTotal number of unique followers: ' + str(len(stargazers)))
f.write('\n\n ## Timeline')
# contributors
contribs = repo.get_contributors()
for contributor in contribs:
if contributor.id not in contributors:
contributors.append(contributor.id)

with open('content/timeline/generated-contributor-total.md', 'w') as f:
f.write('---\n')
f.write('title: Total number of contributors\n')
f.write('draft: false\n')
f.write('type: "timeline"\n')
f.write('date: ')
f.write(str(datetime.datetime.now()))
f.write('\n')
f.write('---\n')
f.write('\nWe have ')
f.write(str(len(contributors)))
f.write(' individuals contributing to Kaoto.\n\n')

g.close()

0 comments on commit 553e3d7

Please sign in to comment.