git: escape string values in configuration

This should handle the special characters that typically occur.

Fixes #1206
This commit is contained in:
Robert Helgesson 2020-05-01 00:11:14 +02:00
parent 8b82f52e75
commit 642d9ffe24
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
6 changed files with 42 additions and 30 deletions

View file

@ -19,9 +19,19 @@ let
else
''${section} "${subsection}"'';
mkValueString = v:
let
escapedV = ''
"${
replaceStrings [ "\n" " " ''"'' "\\" ] [ "\\n" "\\t" ''\"'' "\\\\" ] v
}"'';
in generators.mkValueStringDefault { } (if isString v then escapedV else v);
# generation for multiple ini values
mkKeyValue = k: v:
let mkKeyValue = generators.mkKeyValueDefault { } " = " k;
let
mkKeyValue =
generators.mkKeyValueDefault { inherit mkValueString; } " = " k;
in concatStringsSep "\n" (map (kv: " " + mkKeyValue kv) (toList v));
# converts { a.b.c = 5; } to { "a.b".c = 5; } for toINI