diff options
author | Robert Hensing <roberth@users.noreply.github.com> | 2022-12-19 23:58:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-19 23:58:50 +0100 |
commit | 6db219730e6ab6405442e53de2b8acf3404fbdf7 (patch) | |
tree | a6137127846e89ed148cb6b0105680acbf41908f /lib | |
parent | db01e7b2207e0de45d9c346036f22322495ab249 (diff) | |
parent | 1a44080088c3a4384da7e4529928f7a0a7b1aa4e (diff) |
Merge pull request #205563 from hercules-ci/lib-modules-doc-default-and-example-error-context
lib.modules: Add error context to rendered default and example attrs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/generators.nix | 5 | ||||
-rw-r--r-- | lib/options.nix | 17 |
2 files changed, 18 insertions, 4 deletions
diff --git a/lib/generators.nix b/lib/generators.nix index c0fe69389e00d..4c9c2d1e98693 100644 --- a/lib/generators.nix +++ b/lib/generators.nix @@ -342,7 +342,10 @@ rec { else "{" + introSpace + libStr.concatStringsSep introSpace (libAttr.mapAttrsToList (name: value: - "${libStr.escapeNixIdentifier name} = ${go (indent + " ") value};") v) + "${libStr.escapeNixIdentifier name} = ${ + builtins.addErrorContext "while evaluating an attribute `${name}`" + (go (indent + " ") value) + };") v) + outroSpace + "}" else abort "generators.toPretty: should never happen (v = ${v})"; in go ""; diff --git a/lib/options.nix b/lib/options.nix index b13687576e810..0fd5b64a65d14 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -221,9 +221,10 @@ rec { optionAttrSetToDocList' = _: options: concatMap (opt: let + name = showOption opt.loc; docOption = rec { loc = opt.loc; - name = showOption opt.loc; + inherit name; description = opt.description or null; declarations = filter (x: x != unknownModule) opt.declarations; internal = opt.internal or false; @@ -234,8 +235,18 @@ rec { readOnly = opt.readOnly or false; type = opt.type.description or "unspecified"; } - // optionalAttrs (opt ? example) { example = renderOptionValue opt.example; } - // optionalAttrs (opt ? default) { default = renderOptionValue (opt.defaultText or opt.default); } + // optionalAttrs (opt ? example) { + example = + builtins.addErrorContext "while evaluating the example of option `${name}`" ( + renderOptionValue opt.example + ); + } + // optionalAttrs (opt ? default) { + default = + builtins.addErrorContext "while evaluating the default value of option `${name}`" ( + renderOptionValue (opt.defaultText or opt.default) + ); + } // optionalAttrs (opt ? relatedPackages && opt.relatedPackages != null) { inherit (opt) relatedPackages; }; subOptions = |