vars: commit files for clan vars set

fixes #2601
This commit is contained in:
DavHau
2024-12-17 15:56:08 +07:00
parent 9c8e947a5f
commit b64422679e
3 changed files with 22 additions and 3 deletions

View File

@@ -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:

View File

@@ -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:

View File

@@ -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