Refactor(inventory): move prio 'introspection' into inventoryClass to minimize the 'clanInternals' api

This commit is contained in:
Johannes Kirschbauer
2025-04-29 13:06:56 +02:00
parent 5f31edf3a5
commit 0d003f5424
5 changed files with 22 additions and 7 deletions

View File

@@ -152,7 +152,6 @@ in
# Those options are interfaced by the CLI
# We don't specify the type here, for better performance.
inventory = lib.mkOption { type = lib.types.raw; };
inventoryValuesPrios = lib.mkOption { type = lib.types.raw; };
# all exported clan templates from this clan
templates = lib.mkOption { type = lib.types.raw; };
# all exported clan modules from this clan

View File

@@ -201,14 +201,12 @@ in
modules = config.modules;
inherit inventoryFile;
inventoryValuesPrios =
# Temporary workaround
builtins.removeAttrs (clan-core.clanLib.introspection.getPrios { options = inventory.options; })
# tags are freeformType which is not supported yet.
[ "tags" ];
templates = config.templates;
inventory = config.inventory;
# TODO: Remove this in about a month
# It is only here for backwards compatibility for people with older CLI versions
inventoryValuesPrios = inventoryClass.introspection;
meta = config.inventory.meta;
source = "${clan-core}";

View File

@@ -33,6 +33,7 @@ let
}) config.distributedServices.allMachines;
}
)
(lib.modules.importApply ./inventory-introspection.nix { inherit clanLib; })
];
}).config;
in

View File

@@ -0,0 +1,17 @@
{ clanLib }:
{
config,
options,
lib,
...
}:
{
options.introspection = lib.mkOption {
readOnly = true;
# TODO: use options.inventory instead of the evaluate config attribute
default =
builtins.removeAttrs (clanLib.introspection.getPrios { options = config.inventory.options; })
# tags are freeformType which is not supported yet.
[ "tags" ];
};
}

View File

@@ -375,7 +375,7 @@ def get_inventory_current_priority(flake_dir: str | Path) -> dict:
"""
cmd = nix_eval(
[
f"{flake_dir}#clanInternals.inventoryValuesPrios",
f"{flake_dir}#clanInternals.inventoryClass.introspection",
"--json",
]
)