From de8bbcec1163a840a56b4e2c534158b7e7b1ffc5 Mon Sep 17 00:00:00 2001 From: Ricardo Pardini Date: Thu, 4 May 2023 14:35:37 +0200 Subject: [PATCH] pipeline: correctly quote params passed over pure strings (eg in the GHA JSON matrixes) so values with spaces are not mangled --- lib/tools/common/armbian_utils.py | 4 +++- lib/tools/info/output-gha-matrix.py | 4 ++-- lib/tools/info/output-gha-workflow.py | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/tools/common/armbian_utils.py b/lib/tools/common/armbian_utils.py index d34ad6351..4f78b12db 100755 --- a/lib/tools/common/armbian_utils.py +++ b/lib/tools/common/armbian_utils.py @@ -205,10 +205,12 @@ def armbian_get_all_boards_inventory(): return info_for_board -def map_to_armbian_params(map_params): +def map_to_armbian_params(map_params, quote_params=False) -> list[str]: ret = [] for param in map_params: ret.append(param + "=" + map_params[param]) + if quote_params: + ret = ["'" + param + "'" for param in ret] # single-quote each param... return ret diff --git a/lib/tools/info/output-gha-matrix.py b/lib/tools/info/output-gha-matrix.py index da6cdcafd..84993255b 100644 --- a/lib/tools/info/output-gha-matrix.py +++ b/lib/tools/info/output-gha-matrix.py @@ -92,7 +92,7 @@ def generate_matrix_images(info) -> list[dict]: image_arch = image['out']['ARCH'] runs_on = resolve_gha_runner_tags_via_pipeline_gha_config(inputs, "image", image_arch) - cmds = (armbian_utils.map_to_armbian_params(inputs["vars"]) + inputs["configs"]) # image build is "build" command, omitted here + cmds = (armbian_utils.map_to_armbian_params(inputs["vars"], True) + inputs["configs"]) # image build is "build" command, omitted here invocation = " ".join(cmds) item = {"desc": desc, "runs_on": runs_on, "invocation": invocation} @@ -123,7 +123,7 @@ def generate_matrix_artifacts(info): runs_on = resolve_gha_runner_tags_via_pipeline_gha_config(inputs, artifact_name, artifact_arch) - cmds = (["artifact"] + armbian_utils.map_to_armbian_params(inputs["vars"]) + inputs["configs"]) + cmds = (["artifact"] + armbian_utils.map_to_armbian_params(inputs["vars"], True) + inputs["configs"]) invocation = " ".join(cmds) item = {"desc": desc, "runs_on": runs_on, "invocation": invocation} diff --git a/lib/tools/info/output-gha-workflow.py b/lib/tools/info/output-gha-workflow.py index 46dbe7ee2..3bf449ccf 100644 --- a/lib/tools/info/output-gha-workflow.py +++ b/lib/tools/info/output-gha-workflow.py @@ -154,7 +154,7 @@ for artifact_id in info["artifacts"]: runs_on = ["self-hosted", "Linux", "alfa"] inputs = artifact['in']['original_inputs'] - cmds = (["artifact"] + armbian_utils.map_to_armbian_params(inputs["vars"]) + inputs["configs"]) + cmds = (["artifact"] + armbian_utils.map_to_armbian_params(inputs["vars"], True) + inputs["configs"]) invocation = " ".join(cmds) item = {"desc": desc, "runs_on": runs_on, "invocation": invocation} @@ -195,7 +195,7 @@ for image_id in info["images"]: runs_on = ["self-hosted", "Linux", f"image-{image_arch}"] inputs = image['in'] - cmds = (armbian_utils.map_to_armbian_params(inputs["vars"]) + inputs["configs"]) # image build is "build" command, omitted here + cmds = (armbian_utils.map_to_armbian_params(inputs["vars"], True) + inputs["configs"]) # image build is "build" command, omitted here invocation = " ".join(cmds) iJob: ImageJob = ImageJob(f"image-{image_id}", f"{desc}")