funkwhale/docs/get-releases-json.py

60 wiersze
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
import json
import subprocess
from distutils.version import StrictVersion
def get_versions():
output = subprocess.check_output(
["git", "tag", "-l", "--format=%(creatordate:iso-strict)|%(refname:short)"]
)
tags = []
for line in output.decode().splitlines():
try:
date, tag = line.split("|")
except (ValueError):
continue
if not date or not tag:
continue
tags.append({"id": tag, "date": date})
valid = []
for tag in tags:
try:
StrictVersion(tag["id"])
valid.append(tag)
except ValueError:
continue
return sorted(valid, key=lambda tag: StrictVersion(tag["id"]), reverse=True)
def main(latest=False):
versions = get_versions()
if latest:
print(versions[0]["id"])
else:
data = {"count": len(versions), "releases": versions}
print(json.dumps(data, sort_keys=True, indent=2))
if __name__ == "__main__":
parser = argparse.ArgumentParser(
"""
Compile release data and output in in JSON format
"""
)
parser.add_argument(
"-l",
"--latest",
action="store_true",
help="Only print the latest version then exit",
)
args = parser.parse_args()
main(latest=args.latest)