27 lines
786 B
Python
27 lines
786 B
Python
"""Selects the release files to remove: all but the newest versions, never one in use.
|
|
|
|
Usage: python3 tools/release_files.py <keep> <in-use>... -- <name>...
|
|
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)
|