Merge pull request 'vars: commit files for clan vars set' (#2621) from DavHau/clan-core:DavHau-dave into main

This commit is contained in:
clan-bot
2024-12-17 09:02:41 +00:00
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.clan_uri import FlakeId
from clan_cli.completions import add_dynamic_completer, complete_machines 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.machines.machines import Machine
from clan_cli.vars.get import get_var from clan_cli.vars.get import get_var
from clan_cli.vars.prompt import PromptType from clan_cli.vars.prompt import PromptType
@@ -25,7 +26,13 @@ def set_var(
_var = get_var(_machine, var) _var = get_var(_machine, var)
else: else:
_var = var _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: def set_via_stdin(machine: str, var_id: str, flake: FlakeId) -> None:

View File

@@ -1,4 +1,5 @@
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
if TYPE_CHECKING: if TYPE_CHECKING:
@@ -45,10 +46,10 @@ class Var:
except UnicodeDecodeError: except UnicodeDecodeError:
return "<binary blob>" return "<binary blob>"
def set(self, value: bytes) -> None: def set(self, value: bytes) -> Path | None:
assert self._store is not None assert self._store is not None
assert self._generator 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 @property
def exists(self) -> bool: def exists(self) -> bool:

View File

@@ -766,6 +766,17 @@ def test_commit_message(
commit_message commit_message
== "Update vars via generator my_secret_generator for machine my_machine" == "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 @pytest.mark.with_core