summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2018-04-02 17:21:35 +0200
committerProfpatsch <mail@profpatsch.de>2018-04-27 18:59:39 +0200
commita5f6cdfd7ef36c0ee3c8bda8b487d1292838862f (patch)
treed760d406be34e555ad39fce953a5822c27e44ad0 /lib
parentf13873f35aaff640e8cf16f3dd9dce01f6661687 (diff)
lib/debug: add traceValFn, traceValSeqFn, traceValSeqNFn
Being able to modify the value on-the-fly before printing is very useful in practice.
Diffstat (limited to 'lib')
-rw-r--r--lib/debug.nix9
-rw-r--r--lib/default.nix9
2 files changed, 11 insertions, 7 deletions
diff --git a/lib/debug.nix b/lib/debug.nix
index d163e60b6957..d5e9473ff773 100644
--- a/lib/debug.nix
+++ b/lib/debug.nix
@@ -17,7 +17,8 @@ rec {
traceIf = p: msg: x: if p then trace msg x else x;
- traceVal = x: trace x x;
+ traceValFn = f: x: trace (f x) x;
+ traceVal = traceValFn id;
traceXMLVal = x: trace (builtins.toXML x) x;
traceXMLValMarked = str: x: trace (str + builtins.toXML x) x;
@@ -44,9 +45,11 @@ rec {
(modify depth snip x)) y;
/* `traceSeq`, but the same value is traced and returned */
- traceValSeq = v: traceVal (builtins.deepSeq v v);
+ traceValSeqFn = f: v: traceVal f (builtins.deepSeq v v);
+ traceValSeq = traceValSeqFn id;
/* `traceValSeq` but with fixed depth */
- traceValSeqN = depth: v: traceSeqN depth v v;
+ traceValSeqNFn = f: depth: v: traceSeqN depth (f v) v;
+ traceValSeqN = traceValSeqNFn id;
# this can help debug your code as well - designed to not produce thousands of lines
diff --git a/lib/default.nix b/lib/default.nix
index c292ed33e1da..23e276732db6 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -115,11 +115,12 @@ let
unknownModule mkOption;
inherit (types) isType setType defaultTypeMerge defaultFunctor
isOptionType mkOptionType;
- inherit (debug) addErrorContextToAttrs traceIf traceVal
+ inherit (debug) addErrorContextToAttrs traceIf traceVal traceValFn
traceXMLVal traceXMLValMarked traceSeq traceSeqN traceValSeq
- traceValSeqN traceShowVal traceShowValMarked
- showVal traceCall traceCall2 traceCall3 traceValIfNot runTests
- testAllTrue strict traceCallXml attrNamesToStr;
+ traceValSeqFn traceValSeqN traceValSeqNFn traceShowVal
+ traceShowValMarked showVal traceCall traceCall2 traceCall3
+ traceValIfNot runTests testAllTrue strict traceCallXml
+ attrNamesToStr;
inherit (misc) maybeEnv defaultMergeArg defaultMerge foldArgs
defaultOverridableDelayableArgs composedArgsAndFun
maybeAttrNullable maybeAttr ifEnable checkFlag getValue