feat(submodules): add support for submodule exports

This commit is contained in:
Jaka Hudoklin 2019-10-10 13:00:52 +02:00
parent accd2dec1b
commit 9ca9c44c92
No known key found for this signature in database
GPG key ID: D1F18234B07BD6E2
4 changed files with 52 additions and 2 deletions

View file

@ -29,10 +29,16 @@ with lib;
default = [];
};
exports = mkOption {
description = "Attribute set of functions to export";
type = types.attrs;
default = {};
};
passthru = mkOption {
description = "Attribute set to passthru";
default = {};
type = types.attrs;
default = {};
};
args._empty = mkOption {};

View file

@ -144,11 +144,17 @@ in {
description = "Submodule definition";
type = types.attrs;
};
exportAs = mkOption {
description = "Name under which to register exports";
type = types.nullOr types.str;
default = null;
};
};
config = {
definition = {
inherit (evaledSubmodule.config.submodule) name description version tags;
inherit (evaledSubmodule.config.submodule) name description version tags exports;
};
features = evaledSubmodule.config._module.features;
@ -230,6 +236,11 @@ in {
config = mkMerge ([
{
# register exported functions as args
_module.args = mkMerge (map (submodule: {
${submodule.exportAs} = submodule.definition.exports;
}) (filter (submodule: submodule.exportAs != null) cfg.imports));
_module.features = ["submodules"];
submodules.specialArgs.kubenix = kubenix;

View file

@ -36,6 +36,7 @@ let
./submodules/simple.nix
./submodules/defaults.nix
./submodules/versioning.nix
./submodules/exports.nix
];
testing.args = {
inherit images k8sVersion;

View file

@ -0,0 +1,32 @@
{ name, config, lib, kubenix, subm-lib, ... }:
with lib;
let
submodule = {
imports = [ kubenix.modules.submodule ];
config.submodule = {
name = "subm";
exports = {
inherit id;
};
};
};
in {
imports = with kubenix.modules; [ test submodules ];
test = {
name = "submodules-exports";
description = "Submodules exports test";
assertions = [{
message = "should have library exported";
assertion = subm-lib.id 1 == 1;
}];
};
submodules.imports = [{
modules = [submodule];
exportAs = "subm-lib";
}];
}