From 31196e3d3ce526b0698e13be7f862cc0d34bd814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 8 Dec 2023 12:08:37 +0100 Subject: [PATCH 1/2] vms/run: make flake field option always have a value --- pkgs/clan-cli/clan_cli/vms/run.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vms/run.py b/pkgs/clan-cli/clan_cli/vms/run.py index fb7857b86..f6b55fce3 100644 --- a/pkgs/clan-cli/clan_cli/vms/run.py +++ b/pkgs/clan-cli/clan_cli/vms/run.py @@ -273,16 +273,19 @@ def run_vm( class RunOptions: machine: str flake_url: str | None + flake: Path nix_options: list[str] = field(default_factory=list) - flake: Path | None = None def run_command(args: argparse.Namespace) -> None: - run_options = RunOptions(args.machine, args.flake_url, args.option, args.flake) + run_options = RunOptions( + machine=args.machine, + flake_url=args.flake_url, + flake=args.flake or Path.cwd(), + nix_options=args.option, + ) flake_url = run_options.flake_url or run_options.flake - if not flake_url: - flake_url = Path.cwd() vm = asyncio.run(inspect_vm(flake_url=flake_url, flake_attr=run_options.machine)) run_vm(vm, run_options.nix_options) From 48d7d5f38c76dbbd0d9330920359ab508bbb180c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 8 Dec 2023 11:47:25 +0100 Subject: [PATCH 2/2] vms/run/inspect: also make it more type-safe nix will show proper error messages when it cannot find a flake. --- pkgs/clan-cli/clan_cli/vms/inspect.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vms/inspect.py b/pkgs/clan-cli/clan_cli/vms/inspect.py index d41c3b85f..e5dec4e3a 100644 --- a/pkgs/clan-cli/clan_cli/vms/inspect.py +++ b/pkgs/clan-cli/clan_cli/vms/inspect.py @@ -32,12 +32,20 @@ async def inspect_vm(flake_url: str | Path, flake_attr: str) -> VmConfig: return VmConfig(flake_url=flake_url, flake_attr=flake_attr, **data) +@dataclass +class InspectOptions: + machine: str + flake: Path + + def inspect_command(args: argparse.Namespace) -> None: - if args.flake is None: - flake = Path.cwd() - else: - flake = Path(args.flake) - res = asyncio.run(inspect_vm(flake_url=flake, flake_attr=args.machine)) + inspect_options = InspectOptions( + machine=args.machine, + flake=args.flake or Path.cwd(), + ) + res = asyncio.run( + inspect_vm(flake_url=inspect_options.flake, flake_attr=inspect_options.machine) + ) print("Cores:", res.cores) print("Memory size:", res.memory_size) print("Graphics:", res.graphics)