Merge pull request 'CLI: fix @api.register cli typechecks' (#2127) from hsjobeki/clan-core:cli-api-typechecks into main

Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/2127
This commit is contained in:
kenji
2024-09-16 12:52:28 +00:00
7 changed files with 10 additions and 8 deletions

View File

@@ -107,7 +107,9 @@ API.register(open_file)
self.register(wrapper)
return fn
def register(self, fn: Callable[..., T]) -> Callable[..., T]:
F = TypeVar("F", bound=Callable[..., Any])
def register(self, fn: F) -> F:
if fn.__name__ in self._registry:
msg = f"Function {fn.__name__} already registered"
raise ClanError(msg)

View File

@@ -68,7 +68,7 @@ def create_clan(options: CreateOptions) -> CreateClanResponse:
)
if options.initial:
init_inventory(options.directory, init=options.initial)
init_inventory(str(options.directory), init=options.initial)
response = CreateClanResponse(
flake_init=flake_init,

View File

@@ -35,5 +35,5 @@ Service = dict[str, Any]
@dataclass
class Inventory:
meta: Meta
services: Service
machines: dict[str, Machine] = field(default_factory = dict)
services: dict[str, Service] = field(default_factory = dict)

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env bash
jsonSchema=$(nix build .#inventory-schema --print-out-paths)/schema.json
jsonSchema=$(nix build .#inventory-schema-abstract --print-out-paths)/schema.json
nix run .#classgen "$jsonSchema" "$PKG_ROOT/clan_cli/inventory/classes.py"

View File

@@ -198,7 +198,7 @@ def generate_machine_hardware_info(
f"HW/report: Hardware configuration for {machine_name}",
)
try:
show_machine_hardware_platform(clan_dir, machine_name)
show_machine_hardware_platform(clan_dir.path, machine_name)
except ClanCmdError as e:
log.exception("Failed to evaluate hardware-configuration.nix")
# Restore the backup file
@@ -235,7 +235,7 @@ def hw_generate_command(args: argparse.Namespace) -> None:
force=args.force,
)
hw_info = generate_machine_hardware_info(
opts.flake, opts.machine, opts.target_host, opts.password, opts.force
opts.flake, opts.machine, opts.target_host, opts.password
)
print("Successfully generated hardware information.")
print(f"Target: {opts.machine} ({opts.target_host})")

View File

@@ -124,7 +124,7 @@
classFile = "classes.py";
};
installPhase = ''
${self'.packages.classgen}/bin/classgen ${self'.packages.inventory-schema}/schema.json b_classes.py --stop-at "Service"
${self'.packages.classgen}/bin/classgen ${self'.packages.inventory-schema-abstract}/schema.json b_classes.py --stop-at "Service"
file1=$classFile
file2=b_classes.py

View File

@@ -24,7 +24,7 @@ from helpers import cli
@pytest.mark.with_core
def test_list_modules(test_flake_with_core: FlakeForTest) -> None:
base_path = test_flake_with_core.path
modules_info = list_modules(base_path)
modules_info = list_modules(str(base_path))
assert len(modules_info.items()) > 1
# Random test for those two modules