Add the tool "nixos-typecheck" that can check an option declaration to:

- Enforce that an option declaration has a "defaultText" if and only if the
   type of the option derives from "package", "packageSet" or "nixpkgsConfig"
   and if a "default" attribute is defined.

 - Enforce that the value of the "example" attribute is wrapped with "literalExample"
   if the type of the option derives from "package", "packageSet" or "nixpkgsConfig".

 - Warn if a "defaultText" is defined in an option declaration if the type of
   the option does not derive from "package", "packageSet" or "nixpkgsConfig".

 - Warn if no "type" is defined in an option declaration.
This commit is contained in:
Thomas Strobel
2016-02-29 01:09:00 +01:00
parent c483224c82
commit cad8957eab
24 changed files with 703 additions and 127 deletions
+4 -2
View File
@@ -1,4 +1,4 @@
{ pkgs, options, version, revision, extraSources ? [] }:
{ pkgs, options, internalModule, version, revision, extraSources ? [] }:
with pkgs;
with pkgs.lib;
@@ -6,8 +6,10 @@ with pkgs.lib;
let
# Remove invisible and internal options.
optionsList = filter (opt: opt.visible && !opt.internal) (optionAttrSetToDocList options);
optionsList = filter (opt: opt.visible && !opt.internal) (optionAttrSetToDocList internalModule options);
# INFO: Please add 'defaultText' or 'literalExample' to the option
# definition to avoid this substitution!
# Replace functions by the string <function>
substFunction = x:
if builtins.isAttrs x then mapAttrs (name: substFunction) x