vars: generate proper commit messages

fixes #2126
This commit is contained in:
DavHau
2024-09-17 20:22:01 +02:00
parent f380b874e9
commit cf47c1d51a
4 changed files with 69 additions and 6 deletions

View File

@@ -88,6 +88,7 @@ def encrypt_secret(
add_users: list[str] | None = None,
add_machines: list[str] | None = None,
add_groups: list[str] | None = None,
git_commit: bool = True,
) -> None:
if add_groups is None:
add_groups = []
@@ -145,11 +146,12 @@ def encrypt_secret(
secret_path = secret_path / "secret"
encrypt_file(secret_path, value, sorted(recipient_keys))
files_to_commit.append(secret_path)
commit_files(
files_to_commit,
flake_dir,
f"Update secret {secret_path.name}",
)
if git_commit:
commit_files(
files_to_commit,
flake_dir,
f"Update secret {secret_path.parent.name}",
)
def remove_secret(flake_dir: Path, secret: str) -> None:

View File

@@ -181,7 +181,7 @@ def execute_generator(
commit_files(
files_to_commit,
machine.flake_dir,
f"Update facts/secrets for service {generator_name} in machine {machine.name}",
f"Update vars via generator {generator_name} for machine {machine.name}",
)

View File

@@ -60,6 +60,7 @@ class SecretStore(SecretStoreBase):
value,
add_machines=[self.machine.name],
add_groups=self.machine.deployment["sops"]["defaultGroups"],
git_commit=False,
)
return path

View File

@@ -535,3 +535,63 @@ def test_api_set_prompts(
],
)
assert store.get("my_generator", "prompt1").decode() == "input2"
@pytest.mark.impure
def test_commit_message(
monkeypatch: pytest.MonkeyPatch,
temporary_home: Path,
) -> None:
config = nested_dict()
my_generator = config["clan"]["core"]["vars"]["generators"]["my_generator"]
my_generator["files"]["my_value"]["secret"] = False
my_generator["script"] = "echo hello > $out/my_value"
my_secret_generator = config["clan"]["core"]["vars"]["generators"][
"my_secret_generator"
]
my_secret_generator["files"]["my_secret"]["secret"] = True
my_secret_generator["script"] = "echo hello > $out/my_secret"
flake = generate_flake(
temporary_home,
flake_template=CLAN_CORE / "templates" / "minimal",
machine_configs={"my_machine": config},
monkeypatch=monkeypatch,
)
monkeypatch.chdir(flake.path)
cli.run(
[
"vars",
"generate",
"--flake",
str(flake.path),
"my_machine",
"--service",
"my_generator",
]
)
# get last commit message
commit_message = run(
["git", "log", "-1", "--pretty=%B"],
).stdout.strip()
assert (
commit_message
== "Update vars via generator my_generator for machine my_machine"
)
cli.run(
[
"vars",
"generate",
"--flake",
str(flake.path),
"my_machine",
"--service",
"my_secret_generator",
]
)
commit_message = run(
["git", "log", "-1", "--pretty=%B"],
).stdout.strip()
assert (
commit_message
== "Update vars via generator my_secret_generator for machine my_machine"
)