예제 #1
0
 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]
예제 #2
0
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")
예제 #3
0
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