Skip to content

Commit 86b2624

Browse files
authored
set_matrix: simplify regex, fix typos (#786)
Fix some typos in output, variable-names and comments. The usage of `[\d]` in regex is explicit, but also uneccessarily complex. Simplify a bit.
1 parent 4ffa1e5 commit 86b2624

1 file changed

Lines changed: 31 additions & 30 deletions

File tree

.github/workflows/set_matrix.py

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
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(
152152
set(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

Comments
 (0)