Skip to content
Snippets Groups Projects
get-releases-json.py 1.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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):
    
        if latest:
            print(versions[0]["id"])
        else:
            data = {"count": len(versions), "releases": versions}
            print(json.dumps(data, sort_keys=True, indent=2))
    
        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)