From 7fae930a37a06fe08d4f85d6f41b04b37ed05cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Na=C3=AFm=20Favier?= Date: Sat, 19 Mar 2022 20:39:52 +0100 Subject: [PATCH] lib/trivial: add warnIfNot and throwIf Negated versions of warnIf and throwIfNot. --- lib/trivial.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/trivial.nix b/lib/trivial.nix index c68bac902e91..fd0c9aba4fff 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -323,7 +323,14 @@ rec { Type: bool -> string -> a -> a */ - warnIf = cond: msg: if cond then warn msg else id; + warnIf = cond: msg: if cond then warn msg else x: x; + + /* + Like warnIf, but negated (warn if the first argument is `false`). + + Type: bool -> string -> a -> a + */ + warnIfNot = cond: msg: if cond then x: x else warn msg; /* Like the `assert b; e` expression, but with a custom error message and @@ -347,6 +354,13 @@ rec { */ throwIfNot = cond: msg: if cond then x: x else throw msg; + /* + Like throwIfNot, but negated (throw if the first argument is `true`). + + Type: bool -> string -> a -> a + */ + throwIf = cond: msg: if cond then throw msg else x: x; + /* Check if the elements in a list are valid values from a enum, returning the identity function, or throwing an error message otherwise. Example: