lib/pathsToImportedAttrs: allow directories

check if directory has a default.nix and use directory name as key

Co-authored-by: Timothy DeHerrera <tim.deh@pm.me>
This commit is contained in:
Pacman99 2021-03-27 23:18:27 -07:00
parent ef1ee6e6b8
commit b3aa38702b
3 changed files with 14 additions and 8 deletions

View File

@ -12,13 +12,16 @@ rec {
# Generate an attribute set by mapping a function over a list of values. # Generate an attribute set by mapping a function over a list of values.
genAttrs' = values: f: lib.listToAttrs (map f values); genAttrs' = values: f: lib.listToAttrs (map f values);
# Convert a list of file paths to attribute set # Convert a list of file paths to attribute set where
# that has the filenames stripped of nix extension as keys # the key is the folder or filename stripped of nix
# and imported content of the file as value. # extension and imported content of the file as value.
# #
pathsToImportedAttrs = paths: pathsToImportedAttrs = paths:
let let
paths' = lib.filter (lib.hasSuffix ".nix") paths; paths' = lib.filter
(path: lib.hasSuffix ".nix" path
|| lib.pathExists "${path}/default.nix")
paths;
in in
genAttrs' paths' (path: { genAttrs' paths' (path: {
name = lib.removeSuffix ".nix" name = lib.removeSuffix ".nix"

View File

@ -46,13 +46,15 @@ lib.runTests {
testPathsToImportedAttrs = { testPathsToImportedAttrs = {
expr = expr =
pathsToImportedAttrs [ pathsToImportedAttrs [
./testPathsToImportedAttrs/foo.nix "${self}/tests/testPathsToImportedAttrs/dir"
./testPathsToImportedAttrs/bar.nix "${self}/tests/testPathsToImportedAttrs/foo.nix"
./testPathsToImportedAttrs/t.nix "${self}/tests/testPathsToImportedAttrs/bar.nix"
./testPathsToImportedAttrs/f.nix "${self}/tests/testPathsToImportedAttrs/t.nix"
"${self}/tests/testPathsToImportedAttrs/f.nix"
]; ];
expected = { expected = {
dir = { a = 5; };
foo = { bar = 1; }; foo = { bar = 1; };
bar = { foo = 2; }; bar = { foo = 2; };
t = true; t = true;

View File

@ -0,0 +1 @@
{ a = 5; }