@@ -4,6 +4,7 @@ import sys
|
||||
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.completions import add_dynamic_completer, complete_machines
|
||||
from clan_cli.git import commit_files
|
||||
from clan_cli.machines.machines import Machine
|
||||
from clan_cli.vars.get import get_var
|
||||
from clan_cli.vars.prompt import PromptType
|
||||
@@ -25,7 +26,13 @@ def set_var(
|
||||
_var = get_var(_machine, var)
|
||||
else:
|
||||
_var = var
|
||||
_var.set(value)
|
||||
path = _var.set(value)
|
||||
if path:
|
||||
commit_files(
|
||||
[path],
|
||||
_machine.flake_dir,
|
||||
f"Update var {_var.id} for machine {_machine.name}",
|
||||
)
|
||||
|
||||
|
||||
def set_via_stdin(machine: str, var_id: str, flake: FlakeId) -> None:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -45,10 +46,10 @@ class Var:
|
||||
except UnicodeDecodeError:
|
||||
return "<binary blob>"
|
||||
|
||||
def set(self, value: bytes) -> None:
|
||||
def set(self, value: bytes) -> Path | None:
|
||||
assert self._store is not None
|
||||
assert self._generator is not None
|
||||
self._store.set(self._generator, self, value)
|
||||
return self._store.set(self._generator, self, value)
|
||||
|
||||
@property
|
||||
def exists(self) -> bool:
|
||||
|
||||
@@ -766,6 +766,17 @@ def test_commit_message(
|
||||
commit_message
|
||||
== "Update vars via generator my_secret_generator for machine my_machine"
|
||||
)
|
||||
# ensure `clan vars set` also sets a reasonable commit message
|
||||
set_var(
|
||||
"my_machine",
|
||||
"my_generator/my_value",
|
||||
b"world",
|
||||
FlakeId(str(flake.path)),
|
||||
)
|
||||
commit_message = run(
|
||||
["git", "log", "-1", "--pretty=%B"],
|
||||
).stdout.strip()
|
||||
assert all(x in commit_message for x in ["Update var", "my_generator", "my_value"])
|
||||
|
||||
|
||||
@pytest.mark.with_core
|
||||
|
||||
Reference in New Issue
Block a user