get-releases-json.py 908 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
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})
24 25 26 27 28 29 30 31 32
    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)
33 34 35 36 37 38 39 40 41 42


def main():
    versions = get_versions()
    data = {"count": len(versions), "releases": versions}
    print(json.dumps(data))


if __name__ == "__main__":
    main()