clan-cli: add update command

This commit is contained in:
Jörg Thalheim
2023-08-10 12:30:52 +02:00
parent c9b77e5927
commit a096d8ddcc
7 changed files with 199 additions and 25 deletions

View File

@@ -0,0 +1,35 @@
import os
import shutil
from pathlib import Path
from tempfile import TemporaryDirectory
from environment import mock_env
from host_group import HostGroup
from clan_cli.update import deploy_nixos
def test_update(clan_flake: Path, host_group: HostGroup) -> None:
assert len(host_group.hosts) == 1
host = host_group.hosts[0]
with TemporaryDirectory() as tmpdir:
host.meta["flake_uri"] = clan_flake
host.meta["flake_path"] = str(Path(tmpdir) / "rsync-target")
host.ssh_options["SendEnv"] = "REALPATH"
bin = Path(tmpdir).joinpath("bin")
bin.mkdir()
nixos_rebuild = bin.joinpath("nixos-rebuild")
bash = shutil.which("bash")
assert bash is not None
nixos_rebuild.write_text(
f"""#!{bash}
exit 0
"""
)
nixos_rebuild.chmod(0o755)
path = f"{tmpdir}/bin:{os.environ['PATH']}"
nix_state_dir = Path(tmpdir).joinpath("nix")
nix_state_dir.mkdir()
with mock_env(REALPATH=path):
deploy_nixos(host_group)