about summary refs log tree commit diff
path: root/nix/readTree
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2021-01-30T05·58+0100
committerProfpatsch <mail@profpatsch.de>2021-01-30T12·06+0000
commit5f9e9a60e89775c990156f1a925128fc65865ee3 (patch)
treea0de097d7661c48b2768386e76eb6f5361662df9 /nix/readTree
parentf4a4da134b42e3fcb95101e98aaba6d23c35e193 (diff)
chore(nix/readTree): move function into __functor r/2163
We are going to export some tests under `nix.readTree.tests`, so in
order to do that and still have `nix.readTree` be a function, let’s
move it to `__functor`.

This requires wiring the `args` and `initPath` arguments through
explicitly.

Change-Id: Ife7956b85d35e59c22174b42dcb7cca83ed868ea
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2464
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Diffstat (limited to 'nix/readTree')
-rw-r--r--nix/readTree/default.nix25
1 files changed, 13 insertions, 12 deletions
diff --git a/nix/readTree/default.nix b/nix/readTree/default.nix
index dedef57240..55da146be2 100644
--- a/nix/readTree/default.nix
+++ b/nix/readTree/default.nix
@@ -1,7 +1,5 @@
 { ... }:
 
-args: initPath:
-
 let
   inherit (builtins)
     attrNames
@@ -18,7 +16,7 @@ let
     readDir
     substring;
 
-  argsWithPath = parts:
+  argsWithPath = args: parts:
     let meta.locatedAt = parts;
     in meta // (if isAttrs args then args else args meta);
 
@@ -39,8 +37,8 @@ let
 
   # The marker is added to every set that was imported directly by
   # readTree.
-  importWithMark = path: parts:
-    let imported = import path (argsWithPath parts);
+  importWithMark = args: path: parts:
+    let imported = import path (argsWithPath args parts);
     in if (isAttrs imported)
       then imported // (marker parts)
       else imported;
@@ -49,11 +47,11 @@ let
     let res = match "(.*)\.nix" file;
     in if res == null then null else head res;
 
-  readTree = path: parts:
+  readTree = args: initPath: parts:
     let
-      dir = readDirVisible path;
-      self = importWithMark path parts;
-      joinChild = c: path + ("/" + c);
+      dir = readDirVisible initPath;
+      self = importWithMark args initPath parts;
+      joinChild = c: initPath + ("/" + c);
 
       # Import subdirectories of the current one, unless the special
       # `.skip-subtree` file exists which makes readTree ignore the
@@ -65,16 +63,19 @@ let
       filterDir = f: dir."${f}" == "directory";
       children = if hasAttr ".skip-subtree" dir then [] else map (c: {
         name = c;
-        value = readTree (joinChild c) (parts ++ [ c ]);
+        value = readTree args (joinChild c) (parts ++ [ c ]);
       }) (filter filterDir (attrNames dir));
 
       # Import Nix files
       nixFiles = filter (f: f != null) (map nixFileName (attrNames dir));
       nixChildren = map (c: let p = joinChild (c + ".nix"); in {
         name = c;
-        value = importWithMark p (parts ++ [ c ]);
+        value = importWithMark args p (parts ++ [ c ]);
       }) nixFiles;
     in if dir ? "default.nix"
       then (if isAttrs self then self // (listToAttrs children) else self)
       else (listToAttrs (nixChildren ++ children) // (marker parts));
-in readTree initPath [ (baseNameOf initPath) ]
+
+in {
+   __functor = _: args: initPath: readTree args initPath [ (baseNameOf initPath) ];
+}