cli: don't update macOS machines

This commit is contained in:
Michael Hoang
2025-04-06 18:45:16 +02:00
parent 6de4735c81
commit 72ed0e258a
2 changed files with 22 additions and 2 deletions

View File

@@ -1,12 +1,13 @@
import importlib import importlib
import json import json
import logging import logging
import re
from dataclasses import dataclass, field from dataclasses import dataclass, field
from functools import cached_property from functools import cached_property
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING, Any, Literal from typing import TYPE_CHECKING, Any, Literal
from clan_cli.errors import ClanError from clan_cli.errors import ClanCmdError, ClanError
from clan_cli.facts import public_modules as facts_public_modules from clan_cli.facts import public_modules as facts_public_modules
from clan_cli.facts import secret_modules as facts_secret_modules from clan_cli.facts import secret_modules as facts_secret_modules
from clan_cli.flake import Flake from clan_cli.flake import Flake
@@ -56,10 +57,22 @@ class Machine:
kwargs.update({"extra": {"command_prefix": self.name}}) kwargs.update({"extra": {"command_prefix": self.name}})
log.error(msg, *args, **kwargs) log.error(msg, *args, **kwargs)
@property
# `class` is a keyword, `_class` triggers `SLF001` so we use a sunder name
def _class_(self) -> str:
try:
return self.flake.select(
f"clanInternals.inventory.machineClass.{self.name}"
)
except ClanCmdError as e:
if re.search(f"error: attribute '{self.name}' missing", e.cmd.stderr):
return "nixos"
raise
@property @property
def system(self) -> str: def system(self) -> str:
return self.flake.select( return self.flake.select(
f"nixosConfigurations.{self.name}.pkgs.hostPlatform.system" f"{self._class_}Configurations.{self.name}.pkgs.hostPlatform.system"
) )
@property @property

View File

@@ -238,6 +238,8 @@ def update_command(args: argparse.Namespace) -> None:
if len(args.machines) == 0: if len(args.machines) == 0:
ignored_machines = [] ignored_machines = []
for machine in get_all_machines(args.flake, args.option): for machine in get_all_machines(args.flake, args.option):
if machine._class_ == "darwin":
continue
if machine.deployment.get("requireExplicitUpdate", False): if machine.deployment.get("requireExplicitUpdate", False):
continue continue
try: try:
@@ -265,6 +267,11 @@ def update_command(args: argparse.Namespace) -> None:
machine.override_build_host = args.build_host machine.override_build_host = args.build_host
machine.host_key_check = HostKeyCheck.from_str(args.host_key_check) machine.host_key_check = HostKeyCheck.from_str(args.host_key_check)
for machine in machines:
if machine._class_ == "darwin":
machine.error("Updating macOS machines is not yet supported")
sys.exit(1)
deploy_machines(machines) deploy_machines(machines)
except KeyboardInterrupt: except KeyboardInterrupt:
log.warning("Interrupted by user") log.warning("Interrupted by user")