# non-sematic, e.g. 1.2.3.4
re.compile("^(?P<version>v|V{0,1})(\.{0,1})(?P<major>0|[1-9]\d*)\.(?P<minor>0+|[1-9]\d*)(\.(?P<patch>0+|[1-9]\d*)(\.(?P<subpatch>0|[1-9]\d*))?)$"),
# non-sematic, e.g. 2023-05
- re.compile("^(?P<year>[1-9]{1}[0-9]{3})\.(?P<month>[0-9]{2})$")
+ re.compile("^(?P<year>[1-9]{1}[0-9]{3})\.(?P<month>[0-9]{2})(-dev){0,1}$"),
+ # non-semantic, e.g. abcdef0
+ re.compile("^[a-f0-9]{7}$"),
]
def remove_version(software: str) -> str:
print(f"WARNING: software='{software}' does not contain a version number.")
return software
+ if ";" in software:
+ software = software.split(";")[0]
+ elif "," in software:
+ software = software.split(",")[0]
+ elif " - " in software:
+ software = software.split(" - ")[0]
+
+ # NOISY-DEBUG: print(f"DEBUG: software='{software}'")
version = None
if " " in software:
version = software.split(" ")[-1]
return software
matches = None
+ match = None
# NOISY-DEBUG: print(f"DEBUG: Checking {len(patterns)} patterns ...")
for pattern in patterns:
# Run match()