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
1924def 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+
167215def 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" )
0 commit comments