forked from pub-solar/os
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.
|
||||
genAttrs' = values: f: lib.listToAttrs (map f values);
|
||||
|
||||
# Convert a list of file paths to attribute set
|
||||
# that has the filenames stripped of nix extension as keys
|
||||
# and imported content of the file as value.
|
||||
# Convert a list of file paths to attribute set where
|
||||
# the key is the folder or filename stripped of nix
|
||||
# extension and imported content of the file as value.
|
||||
#
|
||||
pathsToImportedAttrs = paths:
|
||||
let
|
||||
paths' = lib.filter (lib.hasSuffix ".nix") paths;
|
||||
paths' = lib.filter
|
||||
(path: lib.hasSuffix ".nix" path
|
||||
|| lib.pathExists "${path}/default.nix")
|
||||
paths;
|
||||
in
|
||||
genAttrs' paths' (path: {
|
||||
name = lib.removeSuffix ".nix"
|
||||
|
|
|
@ -46,13 +46,15 @@ lib.runTests {
|
|||
testPathsToImportedAttrs = {
|
||||
expr =
|
||||
pathsToImportedAttrs [
|
||||
./testPathsToImportedAttrs/foo.nix
|
||||
./testPathsToImportedAttrs/bar.nix
|
||||
./testPathsToImportedAttrs/t.nix
|
||||
./testPathsToImportedAttrs/f.nix
|
||||
"${self}/tests/testPathsToImportedAttrs/dir"
|
||||
"${self}/tests/testPathsToImportedAttrs/foo.nix"
|
||||
"${self}/tests/testPathsToImportedAttrs/bar.nix"
|
||||
"${self}/tests/testPathsToImportedAttrs/t.nix"
|
||||
"${self}/tests/testPathsToImportedAttrs/f.nix"
|
||||
];
|
||||
|
||||
expected = {
|
||||
dir = { a = 5; };
|
||||
foo = { bar = 1; };
|
||||
bar = { foo = 2; };
|
||||
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