From 5f1d1bc57e8071472780e8cb14f6306225a921f1 Mon Sep 17 00:00:00 2001 From: Farid Zakaria Date: Mon, 19 Oct 2020 14:33:52 -0700 Subject: [PATCH] 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 --- lib/filesystem.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/filesystem.nix b/lib/filesystem.nix index fc35a1a72c6..0a1275e547c 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)); + }