diff options
author | Farid Zakaria <fmzakari@google.com> | 2020-10-19 14:33:52 -0700 |
---|---|---|
committer | Farid Zakaria <fmzakari@google.com> | 2020-10-19 16:42:21 -0700 |
commit | 5f1d1bc57e8071472780e8cb14f6306225a921f1 (patch) | |
tree | 725ea43ae535b506c8ffe6f1e949dd1271ece092 /lib | |
parent | 8b4d70ca94e3ebb959d8737925d2958ea6576c81 (diff) |
lib: Add readTree function to filesystem
Add a friendly function to easily return a flattened list of files within a directory. This is useful if you want to easily iterate or concatSep the list of files all found within a directory. (i.e. when constructing Java's CLASSPATH) Style improvements Co-authored-by: Silvan Mosberger <github@infinisil.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/filesystem.nix | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/filesystem.nix b/lib/filesystem.nix index fc35a1a72c648..0a1275e547cf2 100644 --- a/lib/filesystem.nix +++ b/lib/filesystem.nix @@ -42,4 +42,16 @@ type = (builtins.readDir parent).${base} or null; in file == /. || type == "directory"; in go (if isDir then file else parent); + + + # listFilesRecursive: Path -> [ Path ] + # + # Given a directory, return a flattened list of all files within it recursively. + listFilesRecursive = dir: lib.flatten (lib.mapAttrsToList (name: type: + if type == "directory" then + lib.filesystem.listFilesRecursive (dir + "/${name}") + else + dir + "/${name}" + ) (builtins.readDir dir)); + } |