forked from auxolotl/core
add throwIfNot
This commit is contained in:
parent
2ca5e185ce
commit
427ad23000
|
@ -194,6 +194,49 @@ let
|
||||||
if builtins.elem (builtins.getEnv "NIX_ABORT_ON_WARN") ["1" "true" "yes"]
|
if builtins.elem (builtins.getEnv "NIX_ABORT_ON_WARN") ["1" "true" "yes"]
|
||||||
then msg: builtins.trace "[1;31mwarning: ${msg}[0m" (builtins.abort "NIX_ABORT_ON_WARN=true; warnings are treated as unrecoverable errors.")
|
then msg: builtins.trace "[1;31mwarning: ${msg}[0m" (builtins.abort "NIX_ABORT_ON_WARN=true; warnings are treated as unrecoverable errors.")
|
||||||
else msg: builtins.trace "[1;31mwarning: ${msg}[0m";
|
else msg: builtins.trace "[1;31mwarning: ${msg}[0m";
|
||||||
|
|
||||||
|
/**
|
||||||
|
Like the `assert b; e` expression, but with a custom error message and
|
||||||
|
without the semicolon.
|
||||||
|
|
||||||
|
If true, return the identity function, `r: r`.
|
||||||
|
|
||||||
|
If false, throw the error message.
|
||||||
|
|
||||||
|
Calls can be juxtaposed using function application, as `(r: r) a = a`, so
|
||||||
|
`(r: r) (r: r) a = a`, and so forth.
|
||||||
|
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`cond`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`msg`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
bool -> string -> a -> a
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.trivial.throwIfNot` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
throwIfNot (lib.isList overlays) "The overlays argument to nixpkgs must be a list."
|
||||||
|
lib.foldr (x: throwIfNot (lib.isFunction x) "All overlays passed to nixpkgs must be functions.") (r: r) overlays
|
||||||
|
pkgs
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
*/
|
||||||
|
throwIfNot = cond: msg: if cond then x: x else builtins.throw msg;
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
loadStatic = loadStatic;
|
loadStatic = loadStatic;
|
||||||
|
@ -203,4 +246,5 @@ in
|
||||||
functionArgs = functionArgs;
|
functionArgs = functionArgs;
|
||||||
setFunctionArgs = setFunctionArgs;
|
setFunctionArgs = setFunctionArgs;
|
||||||
warn = warn;
|
warn = warn;
|
||||||
|
throwIfNot = throwIfNot;
|
||||||
}
|
}
|
Loading…
Reference in a new issue