"""Selects the release files to remove: all but the newest versions, never one in use. Usage: python3 tools/release_files.py ... -- ... Prints the names to remove, one per line. """ import re import sys VERSION = re.compile(r"(\d+(?:\.\d+)+)") def version(name): match = VERSION.search(name) return tuple(int(part) for part in match.group(1).split(".")) if match else None def to_remove(names, keep=2, in_use=()): versioned = sorted((n for n in names if version(n) is not None), key=version, reverse=True) return [n for n in versioned[keep:] if n not in set(in_use)] if __name__ == "__main__": args = sys.argv[1:] split = args.index("--") for name in to_remove(args[split + 1:], int(args[0]), args[1:split]): print(name)