from pathlib import Path
import re
import sys
var_regex = re.compile(r"([^.]+).([^.]+).(\d+).var")
def parse_var_filename(filename):
matches = var_regex.fullmatch(var_file_path.name)
creator, package, version = matches.groups()
return (creator.lower(), package.lower(), int(version))
try:
addondir_path = Path(sys.argv[1])
except Exception:
print("USAGE: python3 outdated.py <path_to_AddonPackages>")
exit(1)
latest_version = {}
var_files = list(addondir_path.rglob(r"*.var"))
for var_file_path in var_files:
try:
creator, package, version = parse_var_filename(var_file_path.name)
except Exception as e:
print(f"Could not parse var file name: {var_file_path}: {e}")
continue
latest_known_version = latest_version.get((creator, package))
if (latest_known_version is None) or (version > latest_known_version):
latest_version[(creator, package)] = version
for var_file_path in var_files:
try:
creator, package, version = parse_var_filename(var_file_path.name)
except Exception as e:
print(f"Could not parse var file name: {var_file_path}: {e}")
continue
latest_known_version = latest_version.get((creator, package))
if version < latest_known_version:
print(f"{var_file_path}")