import sys import os import requests import json import os import subprocess from datetime import datetime TOKEN = os.environ["GITEA_API_KEY"] def grab(url): r = requests.get(url, headers = { "authorization": "token " + TOKEN }) if r.status_code != 200: print(url) print("oops...") print(r.text) sys.exit(1) return json.loads(r.text) url = "https://git.crux.best/api/v1/repos/chemicalcrux/{0}/releases".format(sys.argv[1]) data = grab(url) if data: spec = data[0]["tag_name"] + "..master" else: spec = "master" output = subprocess.check_output(["git", "log", r"--pretty=format:%aI%x00%s%x00%b%x00", spec]).decode("utf-8").split("\x00") data = [] # last item is an empty string for i in range(0, len(output)-1, 3): entry = {} entry["date"] = output[i].strip() entry["date"] = datetime.fromisoformat(entry["date"]).strftime("%B %d") entry["subject"] = output[i+1].strip() entry["body"] = output[i+2].strip() data.append(entry) with open(sys.argv[2], "w", encoding="utf-8") as file: json.dump(data, file)