diff --git a/generate.sh b/generate.sh index 30562a4..d9fa347 100755 --- a/generate.sh +++ b/generate.sh @@ -5,7 +5,9 @@ KUBEVIRT_SPEC=https://raw.githubusercontent.com/kubevirt/kubevirt/master/api/ope wget -O "$SWAGGER_CODEGEN_CLI" "$SWAGGER_CODEGEN_CLI_SRC" -java -jar swagger-codegen-cli.jar generate \ +java -jar "$SWAGGER_CODEGEN_CLI" generate \ -i "$KUBEVIRT_SPEC" \ -l python \ -c swagger-codegen-config.json &> kubevirt-pysdk-codegen.log + +python3 scripts/normalize_setup_version.py diff --git a/scripts/normalize_setup_version.py b/scripts/normalize_setup_version.py new file mode 100644 index 0000000..1e98db5 --- /dev/null +++ b/scripts/normalize_setup_version.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +import json +import re +from pathlib import Path + + +CONFIG_PATH = Path("swagger-codegen-config.json") +SETUP_PATH = Path("setup.py") + + +def pep440_version(version): + match = re.match( + r"^v?(?P\d+(?:\.\d+)*)" + r"(?:-(?P
alpha|beta|rc)\.(?P\d+))?"
+        r"(?:-(?P\d+)-g(?P[0-9a-fA-F]+))?$",
+        version,
+    )
+    if not match:
+        return version
+
+    prerelease = {
+        "alpha": "a",
+        "beta": "b",
+        "rc": "rc",
+    }
+
+    normalized = match.group("release")
+    pre = match.group("pre")
+    if pre:
+        normalized += prerelease[pre] + match.group("pre_number")
+
+    distance = match.group("distance")
+    if distance:
+        normalized += ".post%s+g%s" % (distance, match.group("sha").lower())
+
+    return normalized
+
+
+def main():
+    with CONFIG_PATH.open() as config_file:
+        generated_version = json.load(config_file)["packageVersion"]
+
+    normalized_version = pep440_version(generated_version)
+    setup_contents = SETUP_PATH.read_text()
+    setup_contents, replacements = re.subn(
+        r'^VERSION = ".*"$',
+        'VERSION = "%s"' % normalized_version,
+        setup_contents,
+        count=1,
+        flags=re.MULTILINE,
+    )
+
+    if replacements != 1:
+        raise RuntimeError("Could not find VERSION assignment in setup.py")
+
+    SETUP_PATH.write_text(setup_contents)
+    print("Normalized setup.py version: %s -> %s" % (generated_version, normalized_version))
+
+
+if __name__ == "__main__":
+    main()
diff --git a/setup.py b/setup.py
index 5ca3348..df7a2db 100644
--- a/setup.py
+++ b/setup.py
@@ -15,7 +15,7 @@
 from setuptools import setup, find_packages
 
 NAME = "kubevirt-py"
-VERSION = "v1.9.0-beta.0-108-gb9311428b5"
+VERSION = "1.9.0b0.post108+gb9311428b5"
 # To install the library, run the following
 #
 # python setup.py install