about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2022-10-26 15:10:47 +0200
committerSilvan Mosberger <contact@infinisil.com>2022-10-26 15:10:47 +0200
commit9bfc4bbd63433c44aba71b01c54fa3c5130fcb0f (patch)
tree3303523225306fd66a4cd882866a8cb255458e00 /lib
parent8e75d721c25618b34fd30ffd12ba9a4c17fd75f5 (diff)
lib: Automatically generate lib.filesytem docs
Diffstat (limited to 'lib')
-rw-r--r--lib/filesystem.nix58
1 files changed, 40 insertions, 18 deletions
diff --git a/lib/filesystem.nix b/lib/filesystem.nix
index 0a1275e547cf2..9481960552031 100644
--- a/lib/filesystem.nix
+++ b/lib/filesystem.nix
@@ -1,9 +1,23 @@
+# Functions for copying sources to the Nix store.
 { lib }:
-{ # haskellPathsInDir : Path -> Map String Path
-  # A map of all haskell packages defined in the given path,
-  # identified by having a cabal file with the same name as the
-  # directory itself.
-  haskellPathsInDir = root:
+
+let
+  inherit (lib.strings)
+    hasPrefix
+    ;
+in
+
+{
+  /*
+    A map of all haskell packages defined in the given path,
+    identified by having a cabal file with the same name as the
+    directory itself.
+
+    Type: Path -> Map String Path
+  */
+  haskellPathsInDir =
+    # The directory within to search
+    root:
     let # Files in the root
         root-files = builtins.attrNames (builtins.readDir root);
         # Files with their full paths
@@ -17,15 +31,18 @@
             builtins.pathExists (value + "/${name}.cabal")
           ) root-files-with-paths;
     in builtins.listToAttrs cabal-subdirs;
-  # locateDominatingFile :  RegExp
-  #                      -> Path
-  #                      -> Nullable { path : Path;
-  #                                    matches : [ MatchResults ];
-  #                                  }
-  # Find the first directory containing a file matching 'pattern'
-  # upward from a given 'file'.
-  # Returns 'null' if no directories contain a file matching 'pattern'.
-  locateDominatingFile = pattern: file:
+  /*
+    Find the first directory containing a file matching 'pattern'
+    upward from a given 'file'.
+    Returns 'null' if no directories contain a file matching 'pattern'.
+
+    Type: RegExp -> Path -> Nullable { path : Path; matches : [ MatchResults ]; }
+  */
+  locateDominatingFile =
+    # The pattern to search for
+    pattern:
+    # The file to start searching upward from
+    file:
     let go = path:
           let files = builtins.attrNames (builtins.readDir path);
               matches = builtins.filter (match: match != null)
@@ -44,10 +61,15 @@
     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:
+  /*
+    Given a directory, return a flattened list of all files within it recursively.
+
+    Type: Path -> [ Path ]
+  */
+  listFilesRecursive =
+    # The path to recursively list
+    dir:
+    lib.flatten (lib.mapAttrsToList (name: type:
     if type == "directory" then
       lib.filesystem.listFilesRecursive (dir + "/${name}")
     else