about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>2018-05-26 19:01:18 +0300
committerTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>2018-05-26 19:01:18 +0300
commit2760b2446242e7873962e5e6548bee95dfe35aff (patch)
tree86d929e5c62e2a7054d6872adad7889a595a1bda /lib
parent840e430744013afa1e5df95173977e070b6edfa1 (diff)
parent59c09a52f2793bc31a68742082d8a89ca4795a8f (diff)
downloadnixlib-2760b2446242e7873962e5e6548bee95dfe35aff.tar
nixlib-2760b2446242e7873962e5e6548bee95dfe35aff.tar.gz
nixlib-2760b2446242e7873962e5e6548bee95dfe35aff.tar.bz2
nixlib-2760b2446242e7873962e5e6548bee95dfe35aff.tar.lz
nixlib-2760b2446242e7873962e5e6548bee95dfe35aff.tar.xz
nixlib-2760b2446242e7873962e5e6548bee95dfe35aff.tar.zst
nixlib-2760b2446242e7873962e5e6548bee95dfe35aff.zip
Merge remote-tracking branch 'upstream/master' into staging
Diffstat (limited to 'lib')
-rw-r--r--lib/options.nix15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/options.nix b/lib/options.nix
index 9446eca36778..01160b48ec01 100644
--- a/lib/options.nix
+++ b/lib/options.nix
@@ -127,7 +127,20 @@ rec {
 
 
   /* Helper functions. */
-  showOption = concatStringsSep ".";
+
+  # Convert an option, described as a list of the option parts in to a
+  # safe, human readable version. ie:
+  #
+  # (showOption ["foo" "bar" "baz"]) == "foo.bar.baz"
+  # (showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux"
+  showOption = parts: let
+    escapeOptionPart = part:
+      let
+        escaped = lib.strings.escapeNixString part;
+      in if escaped == "\"${part}\""
+         then part
+         else escaped;
+    in (concatStringsSep ".") (map escapeOptionPart parts);
   showFiles = files: concatStringsSep " and " (map (f: "`${f}'") files);
   unknownModule = "<unknown-file>";