vars: refactor - pass Machine objects to run_generators

This commit is contained in:
DavHau
2025-08-13 15:14:16 +07:00
parent a535450ec0
commit 72d3ad09a4
5 changed files with 15 additions and 17 deletions

View File

@@ -323,8 +323,8 @@ export const useMachineGenerators = (
flake: {
identifier: clanUri,
},
full_closure: true, // TODO: Make this configurable
},
full_closure: true, // TODO: Make this configurable
// TODO: Make this configurable
include_previous_values: true,
});

View File

@@ -548,8 +548,12 @@ const InstallSummary = () => {
const runGenerators = client.fetch("run_generators", {
all_prompt_values: store.install.promptValues,
base_dir: clanUri,
machine_name: store.install.machineName,
machine: {
name: store.install.machineName,
flake: {
identifier: clanUri,
},
},
});
set("install", (s) => ({

View File

@@ -699,8 +699,7 @@ def test_api_set_prompts(
monkeypatch.chdir(flake.path)
run_generators(
machine_name="my_machine",
base_dir=flake.path,
machine=Machine(name="my_machine", flake=Flake(str(flake.path))),
generators=["my_generator"],
all_prompt_values={
"my_generator": {
@@ -714,8 +713,7 @@ def test_api_set_prompts(
assert store.exists(my_generator, "prompt1")
assert store.get(my_generator, "prompt1").decode() == "input1"
run_generators(
machine_name="my_machine",
base_dir=flake.path,
machine=Machine(name="my_machine", flake=Flake(str(flake.path))),
generators=["my_generator"],
all_prompt_values={
"my_generator": {

View File

@@ -23,6 +23,7 @@ from clan_lib.errors import ClanError
from clan_lib.flake import Flake, require_flake
from clan_lib.git import commit_files
from clan_lib.machines.list import list_full_machines
from clan_lib.machines.machines import Machine
from clan_lib.nix import nix_config, nix_shell, nix_test_store
from .check import check_vars
@@ -34,7 +35,6 @@ log = logging.getLogger(__name__)
if TYPE_CHECKING:
from clan_lib.flake import Flake
from clan_lib.machines.machines import Machine
@dataclass(frozen=True)
@@ -429,7 +429,7 @@ def _get_previous_value(
@API.register
def get_generators(
machine: "Machine",
machine: Machine,
full_closure: bool,
generator_name: str | None = None,
include_previous_values: bool = False,
@@ -525,9 +525,8 @@ def _generate_vars_for_machine(
@API.register
def run_generators(
machine_name: str,
machine: Machine,
all_prompt_values: dict[str, dict[str, str]],
base_dir: Path,
generators: list[str] | None = None,
no_sandbox: bool = False,
) -> None:
@@ -545,18 +544,16 @@ def run_generators(
ClanError: If the machine or generator is not found, or if there are issues with
executing the generator.
"""
from clan_lib.machines.machines import Machine
machine = Machine(name=machine_name, flake=Flake(str(base_dir)))
if not generators:
generator_objects = Generator.get_machine_generators(
machine_name, machine.flake
machine.name, machine.flake
)
else:
generators_set = set(generators)
generator_objects = [
g
for g in Generator.get_machine_generators(machine_name, machine.flake)
for g in Generator.get_machine_generators(machine.name, machine.flake)
if g.name in generators_set
]
_generate_vars_for_machine(

View File

@@ -236,8 +236,7 @@ def test_clan_create_api(
all_prompt_values[generator.name] = prompt_values
run_generators(
machine_name=machine.name,
base_dir=machine.flake.path,
machine=machine,
generators=[gen.name for gen in generators],
all_prompt_values=all_prompt_values,
)