diff options
author | Profpatsch <mail@profpatsch.de> | 2021-01-30T05·58+0100 |
---|---|---|
committer | Profpatsch <mail@profpatsch.de> | 2021-01-30T12·06+0000 |
commit | 5f9e9a60e89775c990156f1a925128fc65865ee3 (patch) | |
tree | a0de097d7661c48b2768386e76eb6f5361662df9 /nix | |
parent | f4a4da134b42e3fcb95101e98aaba6d23c35e193 (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')
-rw-r--r-- | nix/readTree/default.nix | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/nix/readTree/default.nix b/nix/readTree/default.nix index dedef5724063..55da146be2dc 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) ]; +} |