From 9fdf41813a1897317ce18c763c27e30b52d469d8 Mon Sep 17 00:00:00 2001 From: a-kenji Date: Mon, 21 Jul 2025 22:09:38 +0200 Subject: [PATCH] pkgs/cli: Validate flake for network subcommands When running for example `clan networks list` we now get a reasonable error message, instead of: ``` Traceback (most recent call last): File "/nix/store/8ygq8bfxqydk2917mmg32wy9wb0qzzzd-clan-cli/bin/.clan-wrapped", line 9, in sys.exit(main()) ~~~~^^ File "/nix/store/8ygq8bfxqydk2917mmg32wy9wb0qzzzd-clan-cli/lib/python3.13/site-packages/clan_cli/cli.py", line 516, in main args.func(args) ~~~~~~~~~^^^^^^ File "/nix/store/8ygq8bfxqydk2917mmg32wy9wb0qzzzd-clan-cli/lib/python3.13/site-packages/clan_cli/network/list.py", line 12, in list_command networks = networks_from_flake(flake) File "/nix/store/8ygq8bfxqydk2917mmg32wy9wb0qzzzd-clan-cli/lib/python3.13/site-packages/clan_lib/network/network.py", line 106, in networks_from_flake networks_ = flake.select("clan.exports.instances.*.networking") ^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'select' ``` --- pkgs/clan-cli/clan_cli/network/list.py | 4 ++-- pkgs/clan-cli/clan_cli/network/overview.py | 4 ++-- pkgs/clan-cli/clan_cli/network/ping.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/network/list.py b/pkgs/clan-cli/clan_cli/network/list.py index b69e75522..4175271dd 100644 --- a/pkgs/clan-cli/clan_cli/network/list.py +++ b/pkgs/clan-cli/clan_cli/network/list.py @@ -1,14 +1,14 @@ import argparse import logging -from clan_lib.flake import Flake +from clan_lib.flake import require_flake from clan_lib.network.network import networks_from_flake log = logging.getLogger(__name__) def list_command(args: argparse.Namespace) -> None: - flake: Flake = args.flake + flake = require_flake(args.flake) networks = networks_from_flake(flake) if not networks: diff --git a/pkgs/clan-cli/clan_cli/network/overview.py b/pkgs/clan-cli/clan_cli/network/overview.py index 71bbd8c91..857698c4b 100644 --- a/pkgs/clan-cli/clan_cli/network/overview.py +++ b/pkgs/clan-cli/clan_cli/network/overview.py @@ -1,14 +1,14 @@ import argparse import logging -from clan_lib.flake import Flake +from clan_lib.flake import require_flake from clan_lib.network.network import get_network_overview, networks_from_flake log = logging.getLogger(__name__) def overview_command(args: argparse.Namespace) -> None: - flake: Flake = args.flake + flake = require_flake(args.flake) networks = networks_from_flake(flake) overview = get_network_overview(networks) for network_name, network in overview.items(): diff --git a/pkgs/clan-cli/clan_cli/network/ping.py b/pkgs/clan-cli/clan_cli/network/ping.py index fafeabe32..942d25c5e 100644 --- a/pkgs/clan-cli/clan_cli/network/ping.py +++ b/pkgs/clan-cli/clan_cli/network/ping.py @@ -2,14 +2,14 @@ import argparse import logging from clan_lib.errors import ClanError -from clan_lib.flake import Flake +from clan_lib.flake import require_flake from clan_lib.network.network import networks_from_flake log = logging.getLogger(__name__) def ping_command(args: argparse.Namespace) -> None: - flake: Flake = args.flake + flake = require_flake(args.flake) machine = args.machine network_name = args.network