Skip to content

Commit b677956

Browse files
committed
feat: separate --release argument for SDP version
1 parent bdaf1f1 commit b677956

2 files changed

Lines changed: 57 additions & 2 deletions

File tree

src/image_tools/args.py

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
re.compile(r"0\.0\.0-dev(-.+)?"),
1616
]
1717

18+
DEFAULT_RELEASE_FORMATS = [
19+
re.compile(r"[2-9][0-9]\.[1-9][0-2]?\.\d+(-rc\d+)?"),
20+
re.compile(r"0\.0\.0-dev"),
21+
]
22+
1823

1924
def build_bake_argparser() -> ArgumentParser:
2025
parser = ArgumentParser(
@@ -36,6 +41,12 @@ def build_bake_argparser() -> ArgumentParser:
3641
default="0.0.0-dev",
3742
help="Image version. Default: 0.0.0-dev.",
3843
)
44+
parser.add_argument(
45+
"--release",
46+
type=check_release_format,
47+
default="0.0.0-dev",
48+
help="SDP release version. Default: 0.0.0-dev.",
49+
)
3950
parser.add_argument(
4051
"-p",
4152
"--product",
@@ -164,6 +175,43 @@ def check_image_version_format(image_version) -> str:
164175
raise ValueError(f"Invalid image version: {image_version}")
165176

166177

178+
def check_release_format(release) -> str:
179+
"""
180+
Check release against allowed formats.
181+
182+
>>> check_release_format("23.4.0")
183+
'23.4.0'
184+
>>> check_release_format("23.4.0-rc1")
185+
'23.4.0-rc1'
186+
>>> check_release_format("0.0.0-dev")
187+
'0.0.0-dev'
188+
>>> check_release_format("0.0.0-dev-kebab")
189+
Traceback (most recent call last):
190+
File "<stdin>", line 1, in <module>
191+
File "<stdin>", line 5, in check_release_format
192+
ValueError: Invalid release: 0.0.0-dev-kebab
193+
>>> check_release_format("23.11.1-dev-kaese")
194+
Traceback (most recent call last):
195+
File "<stdin>", line 1, in <module>
196+
File "<stdin>", line 5, in check_release_format
197+
ValueError: Invalid release: 23.11.1-dev-kaese
198+
>>> check_release_format("23.04.0")
199+
Traceback (most recent call last):
200+
File "<stdin>", line 1, in <module>
201+
File "<stdin>", line 5, in check_release_format
202+
ValueError: Invalid release: 23.04.0
203+
>>> check_release_format("23.4.0.prerelease")
204+
Traceback (most recent call last):
205+
File "<stdin>", line 1, in <module>
206+
File "<stdin>", line 5, in check_release_format
207+
ValueError: Invalid release: 23.4.0.prerelease
208+
"""
209+
for p in DEFAULT_RELEASE_FORMATS:
210+
if p.fullmatch(release):
211+
return release
212+
raise ValueError(f"Invalid release: {release}")
213+
214+
167215
def check_build_arg(build_args: str) -> Tuple[str, str]:
168216
kv = build_args.split("=")
169217
if len(kv) != 2:
@@ -181,10 +229,17 @@ def preflight_args() -> Namespace:
181229
parser.add_argument(
182230
"-i",
183231
"--image-version",
184-
help="Image version",
232+
help="Image version. Default: 0.0.0-dev.",
185233
required=True,
186234
type=check_image_version_format,
187235
)
236+
237+
parser.add_argument(
238+
"--release",
239+
help="SDP release version. Default: 0.0.0-dev.",
240+
required=True,
241+
type=check_release_format,
242+
)
188243
parser.add_argument("-p", "--product", help="Product to build images for", required=True)
189244
parser.add_argument("-s", "--submit", help="Submit results", action="store_true")
190245
parser.add_argument("-d", "--dry", help="Dry run.", action="store_true")

src/image_tools/bake.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def bakefile_product_version_targets(
115115
"""
116116
image_name = f"{args.registry}/{args.organization}/{product_name}"
117117
tags = build_image_tags(image_name, args.image_version, versions["product"])
118-
build_args = build_image_args(versions, args.image_version)
118+
build_args = build_image_args(versions, args.release)
119119
target_name = bakefile_target_name_for_product_version(product_name, versions["product"])
120120
rfc3339_date_time = datetime.now(timezone.utc).isoformat()
121121
revision = get_git_revision()

0 commit comments

Comments
 (0)