lib.types.enum: Improve description for lengths 0 and 1

This commit is contained in:
Robert Hensing 2021-05-25 10:53:04 +02:00
parent 9ae7b7e706
commit 285632320d
1 changed files with 11 additions and 1 deletions

View File

@ -581,7 +581,17 @@ rec {
in
mkOptionType rec {
name = "enum";
description = "one of ${concatMapStringsSep ", " show values}";
description =
# Length 0 or 1 enums may occur in a design pattern with type merging
# where an "interface" module declares an empty enum and other modules
# provide implementations, each extending the enum with their own
# identifier.
if values == [] then
"impossible (empty enum)"
else if builtins.length values == 1 then
"value ${show (builtins.head values)} (singular enum)"
else
"one of ${concatMapStringsSep ", " show values}";
check = flip elem values;
merge = mergeEqualOption;
functor = (defaultFunctor name) // { payload = values; binOp = a: b: unique (a ++ b); };