From fe7c618ae5a25af50a2e2d29aeccb68135863aba Mon Sep 17 00:00:00 2001 From: lassulus Date: Wed, 4 Jun 2025 14:57:58 +0200 Subject: [PATCH 1/2] select: fix non escaped ' --- pkgs/clan-cli/clan_lib/flake/flake.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pkgs/clan-cli/clan_lib/flake/flake.py b/pkgs/clan-cli/clan_lib/flake/flake.py index 20675ab6f..e33bebd54 100644 --- a/pkgs/clan-cli/clan_lib/flake/flake.py +++ b/pkgs/clan-cli/clan_lib/flake/flake.py @@ -755,19 +755,21 @@ class Flake: in derivation {{ name = "clan-flake-select"; + result = builtins.toJSON [ + {" ".join( + [ + f"(selectLib.applySelectors (builtins.fromJSON ''{attr}'') flake)" + for attr in str_selectors + ] + )} + ]; + passAsFile = [ "result" ]; system = "{config["system"]}"; builder = "/bin/sh"; args = [ "-c" '' - printf %s '${{builtins.toJSON [ - {" ".join( - [ - f"(selectLib.applySelectors (builtins.fromJSON ''{attr}'') flake)" - for attr in str_selectors - ] - )} - ]}}' > $out + read -r x < "$resultPath"; printf %s "$x" > $out '' ]; }} @@ -784,7 +786,7 @@ class Flake: if tmp_store: build_output = tmp_store.joinpath(*build_output.parts[1:]) - outputs = json.loads(build_output.read_text()) + outputs = json.loads(build_output.read_bytes()) if len(outputs) != len(selectors): msg = f"flake_prepare_cache: Expected {len(outputs)} outputs, got {len(outputs)}" raise ClanError(msg) From 795d72246178ec489612e28608c694f772734fe4 Mon Sep 17 00:00:00 2001 From: lassulus Date: Wed, 4 Jun 2025 14:58:17 +0200 Subject: [PATCH 2/2] select: fix error message showing nonsense --- pkgs/clan-cli/clan_lib/flake/flake.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/clan-cli/clan_lib/flake/flake.py b/pkgs/clan-cli/clan_lib/flake/flake.py index e33bebd54..c74ca4e11 100644 --- a/pkgs/clan-cli/clan_lib/flake/flake.py +++ b/pkgs/clan-cli/clan_lib/flake/flake.py @@ -788,7 +788,7 @@ class Flake: build_output = tmp_store.joinpath(*build_output.parts[1:]) outputs = json.loads(build_output.read_bytes()) if len(outputs) != len(selectors): - msg = f"flake_prepare_cache: Expected {len(outputs)} outputs, got {len(outputs)}" + msg = f"flake_prepare_cache: Expected {len(outputs)} outputs, got {len(selectors)}" raise ClanError(msg) self.load_cache() for i, selector in enumerate(selectors):