blob: 13726d92a595f8468edc22e243a149d6e807f95a [file] [log] [blame]
#!/usr/bin/python3
import argparse
import json
import os
class subcmd:
def __init__(self, parser: argparse._SubParsersAction) -> None:
p = parser.add_parser(
"report", help="Create final report"
)
p.set_defaults(cmd=self)
def run(self, args: argparse.Namespace) -> int:
commits_fp = os.path.join(args.dir, "commits.json")
reviews_fp = os.path.join(args.dir, "reviews.json")
results = {}
if not os.path.isfile(commits_fp):
print("Missing commits.json; run analyze-commits?")
return 1
if not os.path.isfile(reviews_fp):
print("Missing reviews.json; run analyze-reviews?")
return 1
with open(commits_fp, "r") as commits_file:
commits = json.load(commits_file)
with open(reviews_fp, "r") as reviews_file:
reviews = json.load(reviews_file)
for user in sorted(set(commits.keys()).union(reviews.keys())):
user_commits = len(commits.get(user, []))
user_reviews = len(reviews.get(user, []))
points = user_commits * 3 + user_reviews
print(user, points, user_commits, user_reviews)
qualified = points >= 15
results[user] = { "qualified": qualified, "points": points,
"commits": user_commits, "reviews": user_reviews }
with open(os.path.join(args.dir, "report.json"), "w") as outfile:
outfile.write(json.dumps(results, indent = 4))
return 0