diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-04-06 14:56:13 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2020-04-06 14:56:13 +0200 |
commit | 68b43e01ddf990182c87a924d647dc7aa93b34f7 (patch) | |
tree | 4ca0b101c3f241aebe58f4fa4fa01dfd0eaeaee2 /src/libexpr | |
parent | ce3173edc15ad704c5083baba09b7bcdb99d5104 (diff) |
nix flake info: Show resolved URL
This is useful for finding out what a registry lookup resolves to, e.g
$ nix flake info patchelf
Resolved URL: github:NixOS/patchelf
Locked URL: github:NixOS/patchelf/cd7955af31698c571c30b7a0f78e59fd624d0229
Diffstat (limited to 'src/libexpr')
-rw-r--r-- | src/libexpr/flake/flake.cc | 10 | ||||
-rw-r--r-- | src/libexpr/flake/flake.hh | 1 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/libexpr/flake/flake.cc b/src/libexpr/flake/flake.cc index f23c53a82..86bb05b5d 100644 --- a/src/libexpr/flake/flake.cc +++ b/src/libexpr/flake/flake.cc @@ -46,7 +46,7 @@ static FlakeRef lookupInFlakeCache( return flakeRef; } -static std::pair<fetchers::Tree, FlakeRef> fetchOrSubstituteTree( +static std::tuple<fetchers::Tree, FlakeRef, FlakeRef> fetchOrSubstituteTree( EvalState & state, const FlakeRef & originalRef, std::optional<TreeInfo> treeInfo, @@ -76,6 +76,7 @@ static std::pair<fetchers::Tree, FlakeRef> fetchOrSubstituteTree( .storePath = std::move(storePath), .info = *treeInfo, }, + originalRef, originalRef }; } catch (Error & e) { @@ -101,7 +102,7 @@ static std::pair<fetchers::Tree, FlakeRef> fetchOrSubstituteTree( if (treeInfo) assert(tree.storePath == treeInfo->computeStorePath(*state.store)); - return {std::move(tree), lockedRef}; + return {std::move(tree), resolvedRef, lockedRef}; } static void expectType(EvalState & state, ValueType type, @@ -206,7 +207,7 @@ static Flake getFlake( bool allowLookup, FlakeCache & flakeCache) { - auto [sourceInfo, lockedRef] = fetchOrSubstituteTree( + auto [sourceInfo, resolvedRef, lockedRef] = fetchOrSubstituteTree( state, originalRef, treeInfo, allowLookup, flakeCache); // Guard against symlink attacks. @@ -217,6 +218,7 @@ static Flake getFlake( Flake flake { .originalRef = originalRef, + .resolvedRef = resolvedRef, .lockedRef = lockedRef, .sourceInfo = std::make_shared<fetchers::Tree>(std::move(sourceInfo)) }; @@ -490,7 +492,7 @@ LockedFlake lockFlake( } else { - auto [sourceInfo, lockedRef] = fetchOrSubstituteTree( + auto [sourceInfo, resolvedRef, lockedRef] = fetchOrSubstituteTree( state, input.ref, {}, lockFlags.useRegistries, flakeCache); node->inputs.insert_or_assign(id, std::make_shared<LockedNode>(lockedRef, input.ref, sourceInfo.info, false)); diff --git a/src/libexpr/flake/flake.hh b/src/libexpr/flake/flake.hh index 88e386be0..7ee9bbe76 100644 --- a/src/libexpr/flake/flake.hh +++ b/src/libexpr/flake/flake.hh @@ -28,6 +28,7 @@ struct FlakeInput struct Flake { FlakeRef originalRef; + FlakeRef resolvedRef; FlakeRef lockedRef; std::optional<std::string> description; std::shared_ptr<const fetchers::Tree> sourceInfo; |