From 29613e749465c1498d93bbb501949810eef3eec7 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Thu, 27 Aug 2020 01:50:33 +0100 Subject: [PATCH] feat(readTree): Use tree location as the value of `__readTree` Change-Id: I6a087279b5d819db475f2179cb77c0f55cbd0ac6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1860 Tested-by: BuildkiteCI Reviewed-by: glittershark Reviewed-by: lukegb --- nix/readTree/default.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nix/readTree/default.nix b/nix/readTree/default.nix index 3ceb03299..dedef5724 100644 --- a/nix/readTree/default.nix +++ b/nix/readTree/default.nix @@ -6,6 +6,7 @@ let inherit (builtins) attrNames baseNameOf + concatStringsSep filter hasAttr head @@ -31,12 +32,17 @@ let value = children.${name}; }) names); + # Create a mark containing the location of this attribute. + marker = parts: { + __readTree = parts; + }; + # The marker is added to every set that was imported directly by # readTree. importWithMark = path: parts: let imported = import path (argsWithPath parts); in if (isAttrs imported) - then imported // { __readTree = true; } + then imported // (marker parts) else imported; nixFileName = file: @@ -70,5 +76,5 @@ let }) nixFiles; in if dir ? "default.nix" then (if isAttrs self then self // (listToAttrs children) else self) - else (listToAttrs (nixChildren ++ children) // { __readTree = true; }); + else (listToAttrs (nixChildren ++ children) // (marker parts)); in readTree initPath [ (baseNameOf initPath) ]