sintonia/api/libretime_api/legacy/migrations/_version.py
jo 0e4bc4cacd feat: replace php migration with django migration
- keep latest legacy version in initial migration file
- move propel schema to api legacy app
- remove legacy upgrade tool
2022-06-08 23:23:08 +02:00

38 lines
996 B
Python

import re
VERSION_RE = re.compile(
r"""
(?P<release>[0-9]+(?:\.[0-9]+)*)
(?:
-(?P<pre_l>(alpha|beta))
(?:
\.(?P<pre_n>[0-9]+
(?:
\.[0-9]+
)?
)
)?
)?
""",
re.VERBOSE | re.IGNORECASE,
)
def parse_version(version: str):
match = VERSION_RE.search(version)
if not match:
raise Exception(f"invalid version {version}")
major, minor, patch = map(int, match.group("release").split("."))
pre_mapping = {"alpha": -2, "beta": -1, None: 0, "": 0}
pre = pre_mapping[match.group("pre_l")]
pre_major, pre_minor = 0, 0
pre_version = match.group("pre_n")
if pre_version:
pre_version_list = pre_version.split(".")
pre_major = int(pre_version_list.pop(0)) if len(pre_version_list) else 0
pre_minor = int(pre_version_list.pop(0)) if len(pre_version_list) else 0
return (major, minor, patch, pre, pre_major, pre_minor)