From 787781c2ade4574cc3c1d6596a6b466fc12b8f27 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Sat, 9 Aug 2025 20:23:13 +0200 Subject: [PATCH 1/2] Vars: remove spurious 'fake_prompt' with mocked method --- pkgs/clan-cli/clan_cli/vars/generate.py | 31 ++---------------- .../generate_test_vars/cli.py | 32 +++++++++++++++++-- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vars/generate.py b/pkgs/clan-cli/clan_cli/vars/generate.py index fb22a809d..e7fc815fa 100644 --- a/pkgs/clan-cli/clan_cli/vars/generate.py +++ b/pkgs/clan-cli/clan_cli/vars/generate.py @@ -30,7 +30,7 @@ from .graph import ( minimal_closure, requested_closure, ) -from .prompt import Prompt, PromptType, ask +from .prompt import Prompt, ask from .var import Var log = logging.getLogger(__name__) @@ -385,26 +385,6 @@ def _ask_prompts( return prompt_values -def _fake_prompts( - generator: Generator, -) -> dict[str, str]: - prompt_values: dict[str, str] = {} - for prompt in generator.prompts: - var_id = f"{generator.name}/{prompt.name}" - if prompt.prompt_type == PromptType.HIDDEN: - prompt_values[prompt.name] = "fake_hidden_value" - elif prompt.prompt_type == PromptType.MULTILINE_HIDDEN: - prompt_values[prompt.name] = "fake\nmultiline\nhidden\nvalue" - elif prompt.prompt_type == PromptType.MULTILINE: - prompt_values[prompt.name] = "fake\nmultiline\nvalue" - elif prompt.prompt_type == PromptType.LINE: - prompt_values[prompt.name] = "fake_line_value" - else: - msg = f"Unknown prompt type {prompt.prompt_type} for prompt {var_id} in generator {generator.name}" - raise ClanError(msg) - return prompt_values - - def _get_previous_value( machine: "Machine", generator: Generator, @@ -550,7 +530,6 @@ def create_machine_vars_interactive( generator_name: str | None, regenerate: bool, no_sandbox: bool = False, - fake_prompts: bool = False, ) -> bool: _generator = None if generator_name: @@ -580,10 +559,7 @@ def create_machine_vars_interactive( return False all_prompt_values = {} for generator in generators: - if fake_prompts: - all_prompt_values[generator.name] = _fake_prompts(generator) - else: - all_prompt_values[generator.name] = _ask_prompts(generator) + all_prompt_values[generator.name] = _ask_prompts(generator) return _generate_vars_for_machine( machine, generators, @@ -597,7 +573,6 @@ def generate_vars( generator_name: str | None = None, regenerate: bool = False, no_sandbox: bool = False, - fake_prompts: bool = False, ) -> bool: was_regenerated = False for machine in machines: @@ -608,7 +583,6 @@ def generate_vars( generator_name, regenerate, no_sandbox=no_sandbox, - fake_prompts=fake_prompts, ) except Exception as exc: errors += [(machine, exc)] @@ -654,7 +628,6 @@ def generate_command(args: argparse.Namespace) -> None: args.generator, args.regenerate, no_sandbox=args.no_sandbox, - fake_prompts=args.fake_prompts, ) if has_changed: flake.invalidate_cache() diff --git a/pkgs/generate-test-vars/generate_test_vars/cli.py b/pkgs/generate-test-vars/generate_test_vars/cli.py index d42df49e4..b07566aff 100755 --- a/pkgs/generate-test-vars/generate_test_vars/cli.py +++ b/pkgs/generate-test-vars/generate_test_vars/cli.py @@ -10,9 +10,12 @@ from dataclasses import dataclass from pathlib import Path from tempfile import NamedTemporaryFile from typing import Any, override +from unittest.mock import patch -from clan_cli.vars.generate import generate_vars +from clan_cli.vars.generate import Generator, generate_vars +from clan_cli.vars.prompt import PromptType from clan_lib.dirs import find_toplevel +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_lib.machines.machines import Machine from clan_lib.nix import nix_config, nix_eval, nix_test_store @@ -218,13 +221,36 @@ def main() -> None: ) + "\n" ) - with NamedTemporaryFile("w") as f: + + def mocked_prompts( + generator: Generator, + ) -> dict[str, str]: + prompt_values: dict[str, str] = {} + for prompt in generator.prompts: + var_id = f"{generator.name}/{prompt.name}" + if prompt.prompt_type == PromptType.HIDDEN: + prompt_values[prompt.name] = "fake_hidden_value" + elif prompt.prompt_type == PromptType.MULTILINE_HIDDEN: + prompt_values[prompt.name] = "fake\nmultiline\nhidden\nvalue" + elif prompt.prompt_type == PromptType.MULTILINE: + prompt_values[prompt.name] = "fake\nmultiline\nvalue" + elif prompt.prompt_type == PromptType.LINE: + prompt_values[prompt.name] = "fake_line_value" + else: + msg = f"Unknown prompt type {prompt.prompt_type} for prompt {var_id} in generator {generator.name}" + raise ClanError(msg) + return prompt_values + + with ( + patch("clan_cli.vars.generate._ask_prompts", new=mocked_prompts), + NamedTemporaryFile("w") as f, + ): f.write("# created: 2023-07-17T10:51:45+02:00\n") f.write(f"# public key: {sops_pub_key}\n") f.write(sops_priv_key) f.seek(0) os.environ["SOPS_AGE_KEY_FILE"] = f.name - generate_vars(list(machines), fake_prompts=True) + generate_vars(list(machines)) if __name__ == "__main__": From 454b09a67e54add2879970988a8a4b0e86188487 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Sun, 10 Aug 2025 00:19:08 +0200 Subject: [PATCH 2/2] Vars: remove unused return --- pkgs/clan-cli/clan_cli/vars/generate.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vars/generate.py b/pkgs/clan-cli/clan_cli/vars/generate.py index e7fc815fa..d154a62ff 100644 --- a/pkgs/clan-cli/clan_cli/vars/generate.py +++ b/pkgs/clan-cli/clan_cli/vars/generate.py @@ -573,7 +573,7 @@ def generate_vars( generator_name: str | None = None, regenerate: bool = False, no_sandbox: bool = False, -) -> bool: +) -> None: was_regenerated = False for machine in machines: errors = [] @@ -598,8 +598,6 @@ def generate_vars( for machine in machines: machine.info("All vars are already up to date") - return was_regenerated - def generate_command(args: argparse.Namespace) -> None: flake = require_flake(args.flake) @@ -623,14 +621,12 @@ def generate_command(args: argparse.Namespace) -> None: f"clanInternals.machines.{system}.{{{','.join(machine_names)}}}.config.clan.core.vars.generators.*.validationHash", ] ) - has_changed = generate_vars( + generate_vars( machines, args.generator, args.regenerate, no_sandbox=args.no_sandbox, ) - if has_changed: - flake.invalidate_cache() def register_generate_parser(parser: argparse.ArgumentParser) -> None: