vars/api: rename, unregister some unused vars functions

This commit is contained in:
Johannes Kirschbauer
2025-07-06 20:10:58 +02:00
parent 7370212ec2
commit ad48771c98
4 changed files with 25 additions and 85 deletions

View File

@@ -8,14 +8,13 @@ from clan_lib.errors import ClanError
from clan_lib.flake import Flake
from .generate import Var
from .list import get_vars
from .list import get_machine_vars
log = logging.getLogger(__name__)
@API.register
def get_var(base_dir: str, machine_name: str, var_id: str) -> Var:
vars_ = get_vars(base_dir=base_dir, machine_name=machine_name)
def get_machine_var(base_dir: str, machine_name: str, var_id: str) -> Var:
vars_ = get_machine_vars(base_dir=base_dir, machine_name=machine_name)
results = []
for var in vars_:
if var.id == var_id:
@@ -41,7 +40,7 @@ def get_var(base_dir: str, machine_name: str, var_id: str) -> Var:
def get_command(machine_name: str, var_id: str, flake: Flake) -> None:
var = get_var(str(flake.path), machine_name, var_id)
var = get_machine_var(str(flake.path), machine_name, var_id)
if not var.exists:
msg = f"Var {var.id} has not been generated yet"
raise ClanError(msg)

View File

@@ -13,8 +13,7 @@ from .generate import Generator, Prompt, Var, execute_generator
log = logging.getLogger(__name__)
@API.register
def get_vars(base_dir: str, machine_name: str) -> list[Var]:
def get_machine_vars(base_dir: str, machine_name: str) -> list[Var]:
machine = Machine(name=machine_name, flake=Flake(base_dir))
pub_store = machine.public_vars_store
sec_store = machine.secret_vars_store
@@ -32,70 +31,12 @@ def get_vars(base_dir: str, machine_name: str) -> list[Var]:
return all_vars
def _get_previous_value(
machine: Machine,
generator: Generator,
prompt: Prompt,
) -> str | None:
if not prompt.persist:
return None
pub_store = machine.public_vars_store
if pub_store.exists(generator, prompt.name):
return pub_store.get(generator, prompt.name).decode()
sec_store = machine.secret_vars_store
if sec_store.exists(generator, prompt.name):
return sec_store.get(generator, prompt.name).decode()
return None
@API.register
def get_generators(base_dir: str, machine_name: str) -> list[Generator]:
from clan_cli.vars.generate import Generator
machine = Machine(name=machine_name, flake=Flake(base_dir))
generators: list[Generator] = Generator.generators_from_flake(
machine_name, machine.flake
)
for generator in generators:
for prompt in generator.prompts:
prompt.previous_value = _get_previous_value(machine, generator, prompt)
return generators
# TODO: Ensure generator dependencies are met (executed in correct order etc.)
# TODO: for missing prompts, default to existing values
# TODO: raise error if mandatory prompt not provided
@API.register
def set_prompts(
base_dir: str, machine_name: str, updates: list[GeneratorUpdate]
) -> None:
from clan_cli.vars.generate import Generator
machine = Machine(name=machine_name, flake=Flake(base_dir))
for update in updates:
generators = Generator.generators_from_flake(machine_name, machine.flake)
for generator in generators:
if generator.name == update.generator:
break
else:
msg = f"Generator '{update.generator}' not found in machine {machine.name}"
raise ClanError(msg)
execute_generator(
machine,
generator,
secret_vars_store=machine.secret_vars_store,
public_vars_store=machine.public_vars_store,
prompt_values=update.prompt_values,
)
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_vars(str(machine.flake), machine.name))
return stringify_vars(get_machine_vars(str(machine.flake), machine.name))
def list_command(args: argparse.Namespace) -> None:

View File

@@ -3,7 +3,7 @@ import logging
import sys
from clan_cli.completions import add_dynamic_completer, complete_machines
from clan_cli.vars.get import get_var
from clan_cli.vars.get import get_machine_var
from clan_cli.vars.prompt import PromptType
from clan_lib.flake import Flake
from clan_lib.git import commit_files
@@ -21,7 +21,7 @@ def set_var(machine: str | Machine, var: str | Var, value: bytes, flake: Flake)
else:
_machine = machine
if isinstance(var, str):
_var = get_var(str(flake.path), _machine.name, var)
_var = get_machine_var(str(flake.path), _machine.name, var)
else:
_var = var
path = _var.set(value)
@@ -35,7 +35,7 @@ def set_var(machine: str | Machine, var: str | Var, value: bytes, flake: Flake)
def set_via_stdin(machine_name: str, var_id: str, flake: Flake) -> None:
machine = Machine(name=machine_name, flake=flake)
var = get_var(str(flake.path), machine_name, var_id)
var = get_machine_var(str(flake.path), machine_name, var_id)
if sys.stdin.isatty():
new_value = ask(
var.id,