From 8baebb55d43804733c77ac8263fe75e92b544a50 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 12 Dec 2015 19:33:02 -0600 Subject: [PATCH] lib/strings: add readPathsFromFile --- lib/strings.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/strings.nix b/lib/strings.nix index ce2c4132bbca..098da975c601 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -235,4 +235,19 @@ rec { then may_be_int else throw "Could not convert ${str} to int."; + # Read a list of paths from `file', relative to the `rootPath'. Lines + # beginning with `#' are treated as comments and ignored. Whitespace + # is significant. + readPathsFromFile = rootPath: file: + let + root = toString rootPath; + lines = + builtins.map (lib.removeSuffix "\n") + (lib.splitString "\n" (builtins.readFile file)); + removeComments = lib.filter (line: !(lib.hasPrefix "#" line)); + relativePaths = removeComments lines; + absolutePaths = builtins.map (path: builtins.toPath (root + "/" + path)) relativePaths; + in + absolutePaths; + }