1111
1212# simple helper to allow single-line-comments with `//` in json files
1313# https://stackoverflow.com/a/57814048
14- def json_from_file_ignore_comments (filePath ):
14+ def json_from_file_ignore_comments (filepath ):
1515 contents = ""
16- with open (filePath , "r" ) as fh :
16+ with open (filepath , "r" ) as fh :
1717 for line in fh :
18- cleanedLine = line .split ("//" , 1 )[0 ]
19- if len (cleanedLine ) > 0 and line .endswith ("\n " ) and "\n " not in cleanedLine :
20- cleanedLine += "\n "
21- contents += cleanedLine
18+ cleaned_line = line .split ("//" , 1 )[0 ]
19+ if len (cleaned_line ) > 0 and line .endswith ("\n " ) and "\n " not in cleaned_line :
20+ cleaned_line += "\n "
21+ contents += cleaned_line
2222 json_data = json .loads (contents )
2323 return json_data
2424
@@ -31,14 +31,14 @@ def create_toolchain(
3131 cxx = ""
3232
3333 parsed_toolchain = toolchain
34- m = re .match (r"^(ninja|nmake)[-] ?" , toolchain )
34+ m = re .match (r"^(ninja|nmake)- ?" , toolchain )
3535 if m :
3636 parsed_toolchain = toolchain [m .end () :]
3737 out += f"""\
3838 # Generator handled outside toolchain file: { m .groups (1 )[0 ]}
3939"""
4040
41- m = re .match (r"^(gcc|clang|mingw|msys)(-[\d] +)?" , toolchain )
41+ m = re .match (r"^(gcc|clang|mingw|msys)(-\d +)?" , toolchain )
4242 if m :
4343 parsed_toolchain = toolchain [m .end () :]
4444 if toolchain .startswith ("clang" ):
@@ -60,7 +60,7 @@ def create_toolchain(
6060 cxx += ext
6161
6262 m = re .match (
63- r"^android-ndk-api-([\d] +)-(armeabi|armeabi-v7a|arm64-v8a)" , parsed_toolchain
63+ r"^android-ndk-api-(\d +)-(armeabi|armeabi-v7a|arm64-v8a)" , parsed_toolchain
6464 )
6565 if m :
6666 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
@@ -93,12 +93,12 @@ def create_toolchain(
9393 set(CMAKE_ANDROID_STL_TYPE "c++_static") # LLVM libc++ static
9494"""
9595
96- m = re .match (r"^osx-([\d] +)-([\d] +)" , parsed_toolchain )
96+ m = re .match (r"^osx-(\d +)-(\d +)" , parsed_toolchain )
9797 if m :
9898 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
9999 if not m .group (1 ) or not m .group (2 ):
100100 raise RuntimeError (
101- f"project: { project_name } : error while parsing osx toolchain SDK verison : { toolchain } "
101+ f"project: { project_name } : error while parsing osx toolchain SDK version : { toolchain } "
102102 )
103103 osx_sdk = f"{ m .group (1 )} .{ m .group (2 )} "
104104 out += f"""\
@@ -116,12 +116,12 @@ def create_toolchain(
116116 set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "OS X Target Architectures" FORCE)
117117"""
118118
119- m = re .match (r"^ios-nocodesign-([\d] +)-([\d] +)" , parsed_toolchain )
119+ m = re .match (r"^ios-nocodesign-(\d +)-(\d +)" , parsed_toolchain )
120120 if m :
121121 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
122122 if not m .group (1 ) or not m .group (2 ):
123123 raise RuntimeError (
124- f"project: { project_name } : error while parsing osx toolchain SDK verison : { toolchain } "
124+ f"project: { project_name } : error while parsing osx toolchain SDK version : { toolchain } "
125125 )
126126 osx_sdk = f"{ m .group (1 )} .{ m .group (2 )} "
127127 out += f"""\
@@ -152,7 +152,7 @@ def create_toolchain(
152152set(IPHONESIMULATOR_ARCHS "")
153153"""
154154
155- m = re .match (r"^vs-([\d] +)-([\d] +)(-win64)?" , parsed_toolchain )
155+ m = re .match (r"^vs-(\d +)-(\d +)(-win64)?" , parsed_toolchain )
156156 if m :
157157 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
158158 out += f"""\
@@ -161,7 +161,7 @@ def create_toolchain(
161161 cc = "cl"
162162 cxx = "cl"
163163
164- m = re .match (r"^-sdk(-[\d] +)+" , parsed_toolchain )
164+ m = re .match (r"^-sdk(-\d +)+" , parsed_toolchain )
165165 if m :
166166 parsed_toolchain = (
167167 parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
@@ -192,15 +192,15 @@ def create_toolchain(
192192"""
193193
194194 cxx_standard = None
195- m = re .match (r"^-libcxx([\d] +)?" , parsed_toolchain )
195+ m = re .match (r"^-libcxx(\d +)?" , parsed_toolchain )
196196 if m :
197197 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
198198 out += """\
199199 set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -stdlib=libc++")
200200"""
201201 cxx_standard = m .group (1 )
202202
203- m = re .match (r"^-cxx([\d] +)" , parsed_toolchain )
203+ m = re .match (r"^-cxx(\d +)" , parsed_toolchain )
204204 if m :
205205 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
206206 cxx_standard = m .group (1 )
@@ -210,7 +210,7 @@ def create_toolchain(
210210 out += f"set(CMAKE_CXX_STANDARD_REQUIRED ON)\n "
211211 out += f"set(CMAKE_CXX_EXTENSIONS OFF)\n "
212212
213- m = re .match (r"^-c([\d] +)" , parsed_toolchain )
213+ m = re .match (r"^-c(\d +)" , parsed_toolchain )
214214 if m :
215215 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
216216 c_standard = m .group (1 )
@@ -266,7 +266,7 @@ def generator_and_runscript(leg: dict):
266266 generator = None
267267
268268 parsed_toolchain = toolchain
269- m = re .match (r"^(ninja|nmake|mingw|msys)[-] ?" , toolchain )
269+ m = re .match (r"^(ninja|nmake|mingw|msys)- ?" , toolchain )
270270 if m :
271271 parsed_toolchain = parsed_toolchain [m .end () :]
272272 if m .group (1 ).startswith ("ninja" ):
@@ -282,7 +282,7 @@ def generator_and_runscript(leg: dict):
282282 f"project: { project_name } : unhandled generator: { m .group ()} in toolchain: { toolchain } "
283283 )
284284
285- m = re .match (r"^vs-([\d] +)-([\d] +)(-win64)?" , parsed_toolchain )
285+ m = re .match (r"^vs-(\d +)-(\d +)(-win64)?" , parsed_toolchain )
286286 if m :
287287 parsed_toolchain = parsed_toolchain [: m .start ()] + parsed_toolchain [m .end () :]
288288 vs_version = m .group (1 )
@@ -297,26 +297,26 @@ def generator_and_runscript(leg: dict):
297297 # The Windows 2019 Actions runner image will begin deprecation on 2025-06-01 and will be fully unsupported by 2025-06-30
298298 # https://github.com/actions/runner-images/issues/12045
299299 generator_str = "Visual Studio 16 2019"
300- VCVARSALL = "C:\\ Program Files (x86)\\ Microsoft Visual Studio\\ 2019\\ Enterprise\\ Common7\\ Tools\\ VsDevCmd.bat"
300+ vcvarsall = "C:\\ Program Files (x86)\\ Microsoft Visual Studio\\ 2019\\ Enterprise\\ Common7\\ Tools\\ VsDevCmd.bat"
301301 elif vs_version == "17" :
302302 if vs_year != "2022" :
303303 raise RuntimeError (
304304 f"project: { project_name } : VS 17 expected to have year 2022"
305305 )
306306 generator_str = "Visual Studio 17 2022"
307- VCVARSALL = "C:\\ Program Files\\ Microsoft Visual Studio\\ 2022\\ Enterprise\\ Common7\\ Tools\\ VsDevCmd.bat"
307+ vcvarsall = "C:\\ Program Files\\ Microsoft Visual Studio\\ 2022\\ Enterprise\\ Common7\\ Tools\\ VsDevCmd.bat"
308308 else :
309309 raise RuntimeError (
310310 f"project: { project_name } : unhandled vs-generator: { m .group ()} in toolchain: { toolchain } "
311311 )
312312 if not generator and generator_str :
313313 generator = generator_str
314314 if vs_win64 :
315- VCVARSALL_ARGS = "-arch=amd64 -host_arch=amd64"
315+ vcvarsall_args = "-arch=amd64 -host_arch=amd64"
316316 else :
317- VCVARSALL_ARGS = ""
318- leg ["VCVARSALL" ] = VCVARSALL
319- leg ["VCVARSALL_ARGS" ] = VCVARSALL_ARGS
317+ vcvarsall_args = ""
318+ leg ["VCVARSALL" ] = vcvarsall
319+ leg ["VCVARSALL_ARGS" ] = vcvarsall_args
320320
321321 if generator :
322322 leg ["generator" ] = generator
@@ -378,9 +378,9 @@ def main():
378378 run_hunter_tests = True
379379
380380 if projects or run_hunter_tests :
381- dafault_dir = repo_root / ".github/workflows/ci"
381+ default_dir = repo_root / ".github/workflows/ci"
382382
383- default_matrix = json_from_file_ignore_comments (dafault_dir / "matrix.json" )
383+ default_matrix = json_from_file_ignore_comments (default_dir / "matrix.json" )
384384
385385 if projects :
386386 toolchains_dir .mkdir (exist_ok = True )
@@ -407,7 +407,7 @@ def main():
407407
408408 leg ["script" ] = proj_script_file .relative_to (repo_root ).as_posix ()
409409 else :
410- # try to find os specific install script (build.sh/build.cmd)
410+ # try to find os specific install- script (build.sh/build.cmd)
411411 if leg ["os" ].startswith (("ubuntu" , "macos" )):
412412 proj_script_file = project_dir / "build.sh"
413413 if proj_script_file .is_file ():
@@ -452,7 +452,7 @@ def main():
452452
453453 if run_hunter_tests :
454454 hunter_tests_matrix = json_from_file_ignore_comments (
455- dafault_dir / "matrix_hunter_tests.json"
455+ default_dir / "matrix_hunter_tests.json"
456456 )
457457 for leg in hunter_tests_matrix :
458458 leg ["project" ] = leg ["example" ]
@@ -470,6 +470,7 @@ def main():
470470 json .dump (json_output , f , indent = 2 )
471471 else :
472472 print (json .dumps (json_output ))
473+ return 0
473474 else :
474475 print ("No projects found" )
475476 return 1
0 commit comments