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:
parent
ef1ee6e6b8
commit
b3aa38702b
|
@ -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"
|
||||||
|
|
|
@ -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;
|
||||||
|
|
1
tests/testPathsToImportedAttrs/dir/default.nix
Normal file
1
tests/testPathsToImportedAttrs/dir/default.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ a = 5; }
|
Loading…
Reference in a new issue