InstallableFlake: Show all possible attribute names
E.g. $ nix run nixpkgs#hello error: --- Error ---------- nix flake 'flake:nixpkgs' does not provide attribute 'apps.x86_64-linux.hello' or 'hello' instead of $ nix run nixpkgs#hello error: --- Error ---------- nix flake 'flake:nixpkgs' does not provide attribute 'hello'
This commit is contained in:
parent
ad66fb0a37
commit
5332c439d0
|
@ -440,6 +440,16 @@ ref<eval_cache::EvalCache> openEvalCache(
|
|||
}));
|
||||
}
|
||||
|
||||
static std::string showAttrPaths(const std::vector<std::string> & paths)
|
||||
{
|
||||
std::string s;
|
||||
for (const auto & [n, i] : enumerate(paths)) {
|
||||
if (n > 0) s += n + 1 == paths.size() ? " or " : ", ";
|
||||
s += '\''; s += i; s += '\'';
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
std::tuple<std::string, FlakeRef, InstallableValue::DerivationInfo> InstallableFlake::toDerivation()
|
||||
{
|
||||
|
||||
|
@ -477,7 +487,7 @@ std::tuple<std::string, FlakeRef, InstallableValue::DerivationInfo> InstallableF
|
|||
}
|
||||
|
||||
throw Error("flake '%s' does not provide attribute %s",
|
||||
flakeRef, concatStringsSep(", ", quoteStrings(attrPaths)));
|
||||
flakeRef, showAttrPaths(getActualAttrPaths()));
|
||||
}
|
||||
|
||||
std::vector<InstallableValue::DerivationInfo> InstallableFlake::toDerivations()
|
||||
|
@ -505,7 +515,7 @@ std::pair<Value *, Pos> InstallableFlake::toValue(EvalState & state)
|
|||
}
|
||||
|
||||
throw Error("flake '%s' does not provide attribute %s",
|
||||
flakeRef, concatStringsSep(", ", quoteStrings(attrPaths)));
|
||||
flakeRef, showAttrPaths(getActualAttrPaths()));
|
||||
}
|
||||
|
||||
std::vector<std::pair<std::shared_ptr<eval_cache::AttrCursor>, std::string>>
|
||||
|
|
Loading…
Reference in a new issue