forked from lix-project/lix
print type and value in "flake attr is not a derivation" errors
This turns errors like:
error: flake output attribute 'hydraJobs' is not a derivation or path
into errors like:
error: expected flake output attribute 'hydraJobs' to be a derivation or
path but found a set: { binaryTarball = «thunk»; build = «thunk»; etc> }
This change affects all InstallableFlake commands.
Change-Id: I899757af418b6f98201006ec6ee13a448c07077c
This commit is contained in:
parent
3de77e6dbd
commit
20981461d4
20
doc/manual/rl-next/print-value-in-installable-flake-error.md
Normal file
20
doc/manual/rl-next/print-value-in-installable-flake-error.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
synopsis: New-cli flake commands that expect derivations now print the failing value and its type
|
||||||
|
credits: Qyriad
|
||||||
|
category: Improvements
|
||||||
|
cls: 1177
|
||||||
|
---
|
||||||
|
|
||||||
|
In errors like `flake output attribute 'legacyPackages.x86_64-linux.lib' is not a derivation or path`, the message now includes the failing value and type.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: flake output attribute 'nixosConfigurations.yuki.config' is not a derivation or path
|
||||||
|
````
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: expected flake output attribute 'nixosConfigurations.yuki.config' to be a derivation or path but found a set: { appstream = «thunk»; assertions = «thunk»; boot = { bcache = «thunk»; binfmt = «thunk»; binfmtMiscRegistrations = «thunk»; blacklistedKernelModules = «thunk»; bootMount = «thunk»; bootspec = «thunk»; cleanTmpDir = «thunk»; consoleLogLevel = «thunk»; «43 attributes elided» }; «48 attributes elided» }
|
||||||
|
```
|
|
@ -105,9 +105,14 @@ DerivedPathsWithInfo InstallableFlake::toDerivedPaths()
|
||||||
fmt("while evaluating the flake output attribute '%s'", attrPath)))
|
fmt("while evaluating the flake output attribute '%s'", attrPath)))
|
||||||
{
|
{
|
||||||
return { *derivedPathWithInfo };
|
return { *derivedPathWithInfo };
|
||||||
|
} else {
|
||||||
|
throw Error(
|
||||||
|
"expected flake output attribute '%s' to be a derivation or path but found %s: %s",
|
||||||
|
attrPath,
|
||||||
|
showType(v),
|
||||||
|
ValuePrinter(*this->state, v, errorPrintOptions)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
throw Error("flake output attribute '%s' is not a derivation or path", attrPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
auto drvPath = attr->forceDerivation();
|
auto drvPath = attr->forceDerivation();
|
||||||
|
|
Loading…
Reference in a new issue