diff options
author | Janne Heß <janne@hess.ooo> | 2021-06-16 12:27:47 +0200 |
---|---|---|
committer | Silvan Mosberger <contact@infinisil.com> | 2022-02-28 22:51:41 +0100 |
commit | 0c766a100e416611807a184ee35a0edbd11b15a4 (patch) | |
tree | 7eaf0b6814b5d18675da97ef9339d7f98d89b4d9 /nixos | |
parent | b2d803ca57ef06b3f681db109d7f6069b2eb9bc1 (diff) | |
download | nixpkgs-0c766a100e416611807a184ee35a0edbd11b15a4.tar nixpkgs-0c766a100e416611807a184ee35a0edbd11b15a4.tar.gz nixpkgs-0c766a100e416611807a184ee35a0edbd11b15a4.tar.bz2 nixpkgs-0c766a100e416611807a184ee35a0edbd11b15a4.tar.lz nixpkgs-0c766a100e416611807a184ee35a0edbd11b15a4.tar.xz nixpkgs-0c766a100e416611807a184ee35a0edbd11b15a4.tar.zst nixpkgs-0c766a100e416611807a184ee35a0edbd11b15a4.zip |
lib/options: Throw error for options without a type
Makes all options rendered in the manual throw an error if they don't have a type specified. This is a follow-up to #76184 Co-Authored-By: Silvan Mosberger <contact@infinisil.com>
Diffstat (limited to 'nixos')
3 files changed, 17 insertions, 7 deletions
diff --git a/nixos/doc/manual/development/option-declarations.section.md b/nixos/doc/manual/development/option-declarations.section.md index fff06e1ea5b..cb5043b528f 100644 --- a/nixos/doc/manual/development/option-declarations.section.md +++ b/nixos/doc/manual/development/option-declarations.section.md @@ -27,9 +27,10 @@ The function `mkOption` accepts the following arguments. `type` -: The type of the option (see [](#sec-option-types)). It may be - omitted, but that's not advisable since it may lead to errors that - are hard to diagnose. +: The type of the option (see [](#sec-option-types)). This + argument is mandatory for nixpkgs modules. Setting this is highly + recommended for the sake of documentation and type checking. In case it is + not set, a fallback type with unspecified behavior is used. `default` diff --git a/nixos/doc/manual/from_md/development/option-declarations.section.xml b/nixos/doc/manual/from_md/development/option-declarations.section.xml index 0eeffae628e..c7b62192158 100644 --- a/nixos/doc/manual/from_md/development/option-declarations.section.xml +++ b/nixos/doc/manual/from_md/development/option-declarations.section.xml @@ -38,9 +38,11 @@ options = { <listitem> <para> The type of the option (see - <xref linkend="sec-option-types" />). It may be omitted, but - that’s not advisable since it may lead to errors that are hard - to diagnose. + <xref linkend="sec-option-types" />). This argument is + mandatory for nixpkgs modules. Setting this is highly + recommended for the sake of documentation and type checking. + In case it is not set, a fallback type with unspecified + behavior is used. </para> </listitem> </varlistentry> diff --git a/nixos/lib/make-options-doc/mergeJSON.py b/nixos/lib/make-options-doc/mergeJSON.py index 029787a3158..8e2ea322dc8 100644 --- a/nixos/lib/make-options-doc/mergeJSON.py +++ b/nixos/lib/make-options-doc/mergeJSON.py @@ -66,14 +66,21 @@ for (k, v) in overrides.items(): elif ov is not None or cur.get(ok, None) is None: cur[ok] = ov +severity = "error" if warningsAreErrors else "warning" + # check that every option has a description hasWarnings = False for (k, v) in options.items(): if v.value.get('description', None) is None: - severity = "error" if warningsAreErrors else "warning" hasWarnings = True print(f"\x1b[1;31m{severity}: option {v.name} has no description\x1b[0m", file=sys.stderr) v.value['description'] = "This option has no description." + if v.value.get('type', "unspecified") == "unspecified": + hasWarnings = True + print( + f"\x1b[1;31m{severity}: option {v.name} has no type. Please specify a valid type, see " + + "https://nixos.org/manual/nixos/stable/index.html#sec-option-types\x1b[0m", file=sys.stderr) + if hasWarnings and warningsAreErrors: print( "\x1b[1;31m" + |