From 4d08da78e0348ece95d685273450914fc5b31a9f Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Sun, 17 Feb 2019 19:43:04 +0100 Subject: [PATCH] feat(submodules): pass instance name directly --- submodules.nix | 5 +---- tests/submodules/simple.nix | 33 +++++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/submodules.nix b/submodules.nix index 132dfe1..183bfff 100644 --- a/submodules.nix +++ b/submodules.nix @@ -19,7 +19,6 @@ let modules = opts' ++ map (def: { _file = def.file; imports = [(coerce def.value)]; }) defs; in (evalModules { inherit modules specialArgs; - args.name = last loc; prefix = loc; }).config; getSubOptions = prefix: (evalModules @@ -203,9 +202,7 @@ in { description = "Submodule instance ${config.name} for ${submoduleDefinition.name}:${submoduleDefinition.version} config"; type = submoduleWithSpecialArgs ({...}: { imports = submodule.modules ++ cfg.defaults ++ [submoduleOptions ./submodules.nix]; - _module.args.submodule = { - name = config.name; - }; + _module.args.name = config.name; }) specialArgs; default = {}; }; diff --git a/tests/submodules/simple.nix b/tests/submodules/simple.nix index c8ae70c..457411a 100644 --- a/tests/submodules/simple.nix +++ b/tests/submodules/simple.nix @@ -1,8 +1,10 @@ -{ config, lib, kubenix, ... }: +{ name, config, lib, kubenix, ... }: with lib; -{ +let + cfg = config.submodules.instances.instance; +in { imports = [ kubenix.submodules ]; @@ -12,30 +14,41 @@ with lib; description = "Simple k8s submodule test"; assertions = [{ message = "Submodule name is set"; - assertion = config.submodules.instances.empty.name == "empty"; + assertion = cfg.name == "instance"; } { message = "Submodule version is set"; - assertion = config.submodules.instances.empty.version == null; + assertion = cfg.version == null; } { message = "Submodule config has submodule definition"; - assertion = config.submodules.instances.empty.config.submodule.name == "empty"; + assertion = cfg.config.submodule.name == "submodule"; } { message = "Should have argument set"; - assertion = config.submodules.instances.empty.config.args.value == "test"; + assertion = cfg.config.args.value == "test"; + } { + message = "Should have submodule name set"; + assertion = cfg.config.args.name == "instance"; }]; }; submodules.imports = [{ - module = { - config.submodule.name = "empty"; + module = {name, ...}: { + config.submodule.name = "submodule"; options.args.value = mkOption { description = "Submodule argument"; type = types.str; }; + options.args.name = mkOption { + description = "Submodule name"; + type = types.str; + default = name; + }; }; }]; - submodules.instances.empty = { - config.args.value = "test"; + submodules.instances.instance = { + submodule = "submodule"; + config = {name, ...}: { + config.args.value = "test"; + }; }; }