From 597eb46c478411d753d87b2adfeb0646557c0fc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 25 Sep 2025 17:41:51 +0200 Subject: [PATCH 1/2] vars: speedup get/list no longer get the full closure that is only needed for generating vars --- pkgs/clan-cli/clan_cli/vars/list.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vars/list.py b/pkgs/clan-cli/clan_cli/vars/list.py index 93c3babbe..cba185b6c 100644 --- a/pkgs/clan-cli/clan_cli/vars/list.py +++ b/pkgs/clan-cli/clan_cli/vars/list.py @@ -2,9 +2,9 @@ import argparse import logging from clan_cli.completions import add_dynamic_completer, complete_machines +from clan_cli.vars.generator import Generator from clan_lib.flake import require_flake from clan_lib.machines.machines import Machine -from clan_lib.vars.generate import get_generators from .generator import Var @@ -12,6 +12,15 @@ log = logging.getLogger(__name__) def get_machine_vars(machine: Machine) -> list[Var]: + """Get all vars for a machine. + + Args: + machine: The machine to get vars for. + + Returns: + List of all vars for the machine with their current values and metadata. + + """ # TODO: We dont have machine level store / this granularity yet # We should move the store definition to the flake, as there can be only one store per clan pub_store = machine.public_vars_store @@ -19,7 +28,9 @@ def get_machine_vars(machine: Machine) -> list[Var]: all_vars = [] - generators = get_generators(machines=[machine], full_closure=True) + # Only load the specific machine's generators for better performance + generators = Generator.get_machine_generators([machine.name], machine.flake) + for generator in generators: for var in generator.files: if var.secret: From d67e23890b314187135fac84ef190bed8490a995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 30 Sep 2025 12:06:58 +0200 Subject: [PATCH 2/2] inline stringify_vars --- pkgs/clan-cli/clan_cli/vars/list.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vars/list.py b/pkgs/clan-cli/clan_cli/vars/list.py index cba185b6c..558fd0768 100644 --- a/pkgs/clan-cli/clan_cli/vars/list.py +++ b/pkgs/clan-cli/clan_cli/vars/list.py @@ -42,18 +42,16 @@ def get_machine_vars(machine: Machine) -> list[Var]: return all_vars -def stringify_vars(_vars: list[Var]) -> str: - return "\n".join([str(var) for var in _vars]) - - def stringify_all_vars(machine: Machine) -> str: - return stringify_vars(get_machine_vars(machine)) + all_vars = get_machine_vars(machine) + return "\n".join([str(var) for var in all_vars]) def list_command(args: argparse.Namespace) -> None: flake = require_flake(args.flake) machine = Machine(name=args.machine, flake=flake) - print(stringify_all_vars(machine)) + all_vars = get_machine_vars(machine) + print("\n".join([str(var) for var in all_vars])) def register_list_parser(parser: argparse.ArgumentParser) -> None: