pkgs/clan: Add machine validator with suggestion logic

Add machine validator with suggestion logic to:
- `clan machines update`
- `clan machines delete`
- `clan machines update-hardware-config`
This commit is contained in:
a-kenji
2025-06-26 16:57:51 +02:00
parent c079d6b65f
commit 3e70e30b6b
6 changed files with 213 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ import logging
from clan_lib.machines.delete import delete_machine
from clan_lib.machines.machines import Machine
from clan_lib.machines.suggestions import validate_machine_names
from clan_cli.completions import add_dynamic_completer, complete_machines
@@ -10,6 +11,7 @@ log = logging.getLogger(__name__)
def delete_command(args: argparse.Namespace) -> None:
validate_machine_names([args.name], args.flake)
delete_machine(Machine(flake=args.flake, name=args.name))

View File

@@ -7,6 +7,7 @@ from clan_lib.machines.hardware import (
generate_machine_hardware_info,
)
from clan_lib.machines.machines import Machine
from clan_lib.machines.suggestions import validate_machine_names
from clan_lib.ssh.remote import Remote
from clan_cli.completions import add_dynamic_completer, complete_machines
@@ -17,6 +18,7 @@ log = logging.getLogger(__name__)
def update_hardware_config_command(args: argparse.Namespace) -> None:
validate_machine_names([args.machine], args.flake)
host_key_check = args.host_key_check
machine = Machine(flake=args.flake, name=args.machine)
opts = HardwareGenerateOptions(

View File

@@ -5,6 +5,7 @@ import sys
from clan_lib.async_run import AsyncContext, AsyncOpts, AsyncRuntime
from clan_lib.errors import ClanError
from clan_lib.machines.machines import Machine
from clan_lib.machines.suggestions import validate_machine_names
from clan_lib.machines.update import deploy_machine
from clan_lib.nix import nix_config
from clan_lib.ssh.remote import Remote
@@ -45,6 +46,9 @@ def update_command(args: argparse.Namespace) -> None:
msg = f"No machines found with tags: {', '.join(args.tags)}"
raise ClanError(msg)
if args.machines:
validate_machine_names(args.machines, args.flake)
for machine_name in selected_machines:
machine = Machine(name=machine_name, flake=args.flake)
machines.append(machine)