refactor(nix/lib): rewrite recurseDir to leverage pipe operators
Some checks failed
Check Formatting of Files / Check-Formatting (push) Failing after 32s

This commit is contained in:
Price Hiller 2024-11-06 17:29:36 -06:00
parent b975022f17
commit 11ad7c3991
Signed by: Price
GPG Key ID: C3FADDE7A8534BEB

View File

@ -3,28 +3,18 @@
lib ? (import <nixpkgs> { }).lib,
}:
rec {
hasSuffix =
suffix: string:
let
lenSuffix = builtins.stringLength suffix;
lenString = builtins.stringLength string;
in
(lenString >= lenSuffix && (builtins.substring (lenString - lenSuffix) lenString string) == suffix);
recurseDir =
dir:
let
dirContents = builtins.readDir dir;
in
(builtins.concatMap (
dirItem:
let
itemType = builtins.getAttr dirItem dirContents;
itemPath = dir + "/${dirItem}";
in
if itemType == "directory" then (recurseDir itemPath) else [ itemPath ]
) (builtins.attrNames dirContents));
builtins.readDir dir
|> lib.attrsets.mapAttrs' (
fEntry: fType: lib.attrsets.nameValuePair (builtins.toString (dir + "/${fEntry}")) fType
)
|> lib.attrsets.mapAttrsToList (
fEntry: fType: if fType == "directory" then (recurseDir "${fEntry}") else "${fEntry}"
)
|> lib.lists.flatten;
recurseFilesInDir =
dir: suffix: (builtins.filter (file: hasSuffix "${suffix}" file) (recurseDir dir));
dir: suffix: (builtins.filter (file: lib.strings.hasSuffix "${suffix}" file) (recurseDir dir));
recurseFilesInDirs =
dirs: suffix: (builtins.concatMap (dir: (recurseFilesInDir dir "${suffix}")) dirs);
# Full credit to https://stackoverflow.com/questions/54504685/nix-function-to-merge-attributes-records-recursively-and-concatenate-arrays/54505212#54505212