def __init__(self, name: str): r = re.compile(TAG_REGEXP) # Automatically remove refs/tags/ if full refname passed here name = removeprefix(name, "refs/tags/") if not r.match(name): raise argparse.ArgumentTypeError( f"release name {name} does not match " "v12.1.2.15-(testing|prestable|stable|lts) pattern") self._name = name self._version = removeprefix(self._name, "v") self._version = self.version.split("-")[0] self._version_parts = tuple(self.version.split(".")) self._type = self._name.split("-")[-1]
def version_arg(version: str) -> ClickHouseVersion: version = removeprefix(version, "refs/tags/") try: return get_version_from_string(version) except ValueError: pass try: return get_version_from_tag(version) except ValueError: pass raise ArgumentTypeError(f"version {version} does not match tag of plain version")
def read_versions(versions_path: str = FILE_WITH_VERSION_PATH) -> VERSIONS: versions = {} path_to_file = get_abs_path(versions_path) with open(path_to_file, "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line.startswith("SET("): continue value = 0 # type: Union[int, str] name, value = line[4:-1].split(maxsplit=1) name = removeprefix(name, "VERSION_").lower() try: value = int(value) except ValueError: pass versions[name] = value return versions