Merge pull request 'vars: commit files for clan vars set' (#2621) from DavHau/clan-core:DavHau-dave into main
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user