lib/options: Relax showOption quoting

124cccbe3b
broke the build of NixOS manual.

It does not make sense to be as strict as with attributes since we
are not limited by the CLI's inability to handle numbers.
Placeholders should not be quoted either as they are not part of Nix
syntax but a meta-level construct.
This commit is contained in:
Jan Tojnar 2020-04-14 04:49:17 +02:00
parent 1ca2475b0c
commit c652b64a26
No known key found for this signature in database
GPG key ID: 7FAB2A15F7A607A4

View file

@ -192,8 +192,21 @@ rec {
Example:
(showOption ["foo" "bar" "baz"]) == "foo.bar.baz"
(showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux"
Placeholders will not be quoted as they are not actual values:
(showOption ["foo" "*" "bar"]) == "foo.*.bar"
(showOption ["foo" "<name>" "bar"]) == "foo.<name>.bar"
Unlike attributes, options can also start with numbers:
(showOption ["windowManager" "2bwm" "enable"]) == "windowManager.2bwm.enable"
*/
showOption = parts: concatMapStringsSep "." escapeNixIdentifier parts;
showOption = parts:
let
escapeOptionPart = part:
if part == "*" || builtins.match "<.+>" part != null || builtins.match "[a-zA-Z0-9_][a-zA-Z0-9_'-]+" part != null
then part
else escapeNixIdentifier part;
in concatMapStringsSep "." escapeOptionPart parts;
showFiles = files: concatStringsSep " and " (map (f: "`${f}'") files);
unknownModule = "<unknown-file>";