|
17 | 17 | from pathlib import Path
|
18 | 18 | import json
|
19 | 19 | from datetime import datetime
|
20 |
| -import sys |
| 20 | +import subprocess |
21 | 21 |
|
22 | 22 | from packaging.version import Version
|
23 | 23 |
|
24 | 24 |
|
25 | 25 | parser = argparse.ArgumentParser()
|
26 | 26 | parser.add_argument("--write-json", action="store_true")
|
27 |
| -parser.add_argument("--version-suffix", action="store", type=str) |
28 | 27 |
|
29 |
| -release_type = parser.add_mutually_exclusive_group() |
30 |
| -release_type.add_argument("-stable", "--stable-release", action="store_true") # default |
| 28 | +release_type = parser.add_mutually_exclusive_group(required=True) |
| 29 | +release_type.add_argument("-stable", "--stable-release", action="store_true") |
31 | 30 | release_type.add_argument("-rc", "--nightly-release", action="store_true")
|
32 |
| - |
| 31 | +release_type.add_argument("-dev", "--development-release", action="store_true") |
| 32 | +release_type.add_argument("--version-suffix", action="store", type=str) |
33 | 33 |
|
34 | 34 | args = parser.parse_args()
|
35 | 35 |
|
36 |
| -if not (args.stable_release or args.nightly_release): |
37 |
| - parser.print_usage(sys.stderr) |
38 |
| - sys.stderr.write("error: A release type is required\n") |
39 |
| - sys.exit(1) |
40 |
| - |
41 |
| -if args.stable_release and args.version_suffix: |
42 |
| - sys.stderr.write("error: A version suffix is only supported for stable releases\n") |
43 |
| - sys.exit(1) |
44 |
| - |
45 | 36 | THIS_DIR = Path(__file__).parent.resolve()
|
46 | 37 | REPO_ROOT = THIS_DIR.parent.parent
|
47 | 38 |
|
48 |
| -VERSION_FILE_SHARKTANK = REPO_ROOT / "sharktank/version.json" |
49 |
| -VERSION_FILE_SHORTFIN = REPO_ROOT / "shortfin/version.json" |
50 |
| -VERSION_FILE_LOCAL = REPO_ROOT / "shark-ai/version_local.json" |
| 39 | +VERSION_FILE_SHARKTANK_PATH = REPO_ROOT / "sharktank/version.json" |
| 40 | +VERSION_FILE_SHORTFIN_PATH = REPO_ROOT / "shortfin/version.json" |
| 41 | +VERSION_FILE_LOCAL_PATH = REPO_ROOT / "shark-ai/version_local.json" |
51 | 42 |
|
52 | 43 |
|
53 | 44 | def load_version_info(version_file):
|
54 | 45 | with open(version_file, "rt") as f:
|
55 | 46 | return json.load(f)
|
56 | 47 |
|
57 | 48 |
|
58 |
| -def write_version_info(): |
59 |
| - with open(VERSION_FILE_LOCAL, "w") as f: |
60 |
| - json.dump(version_local, f, indent=2) |
| 49 | +def write_version_info(version_file, version): |
| 50 | + with open(version_file, "w") as f: |
| 51 | + json.dump({"package-version": version}, f, indent=2) |
61 | 52 | f.write("\n")
|
62 | 53 |
|
63 | 54 |
|
64 |
| -sharktank_version = load_version_info(VERSION_FILE_SHARKTANK) |
65 |
| -SHARKTANK_PACKAGE_VERSION = sharktank_version.get("package-version") |
66 |
| -SHARKTANK_BASE_VERSION = Version(SHARKTANK_PACKAGE_VERSION).base_version |
| 55 | +sharktank_version = load_version_info(VERSION_FILE_SHARKTANK_PATH) |
| 56 | +sharktank_package_version = sharktank_version.get("package-version") |
| 57 | +sharktank_base_version = Version(sharktank_package_version).base_version |
67 | 58 |
|
68 |
| -shortfin_version = load_version_info(VERSION_FILE_SHORTFIN) |
69 |
| -SHORTFIN_PACKAGE_VERSION = shortfin_version.get("package-version") |
70 |
| -SHORTFIN_BASE_VERSION = Version(SHORTFIN_PACKAGE_VERSION).base_version |
| 59 | +shortfin_version = load_version_info(VERSION_FILE_SHORTFIN_PATH) |
| 60 | +shortfin_package_version = shortfin_version.get("package-version") |
| 61 | +shortfin_base_version = Version(shortfin_package_version).base_version |
71 | 62 |
|
72 |
| -if SHARKTANK_BASE_VERSION > SHORTFIN_BASE_VERSION: |
73 |
| - COMMON_VERSION = SHARKTANK_BASE_VERSION |
| 63 | +if sharktank_base_version > shortfin_base_version: |
| 64 | + common_version = sharktank_base_version |
74 | 65 | else:
|
75 |
| - COMMON_VERSION = SHORTFIN_BASE_VERSION |
| 66 | + common_version = shortfin_base_version |
76 | 67 |
|
77 | 68 | if args.nightly_release:
|
78 |
| - if args.version_suffix: |
79 |
| - VERSION_SUFFIX = args.version_suffix |
80 |
| - else: |
81 |
| - VERSION_SUFFIX = "rc" + datetime.today().strftime("%Y%m%d") |
82 |
| - |
83 |
| - COMMON_VERSION += VERSION_SUFFIX |
| 69 | + common_version += "rc" + datetime.today().strftime("%Y%m%d") |
| 70 | +elif args.development_release: |
| 71 | + common_version += ( |
| 72 | + ".dev0+" |
| 73 | + + subprocess.check_output(["git", "rev-parse", "HEAD"]).decode("ascii").strip() |
| 74 | + ) |
| 75 | +elif args.version_suffix: |
| 76 | + common_version += args.version_suffix |
84 | 77 |
|
85 | 78 | if args.write_json:
|
86 |
| - version_local = {"package-version": COMMON_VERSION} |
87 |
| - write_version_info() |
| 79 | + write_version_info(VERSION_FILE_LOCAL_PATH, common_version) |
88 | 80 |
|
89 |
| -print(COMMON_VERSION) |
| 81 | +print(common_version) |
0 commit comments