blob: 5be8d675924c82eedc29325ea1820d29c4dc6454 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
{ lib, ... }:
with lib;
rec {
escape =
let
isSafeChar = testString "[-+./0-9:=A-Z_a-z]";
in
x:
if x == "" then "''"
else stringAsChars (c:
if isSafeChar c then c
else if c == "\n" then "'\n'"
else "\\${c}"
) x;
#
# shell script generators
#
# example: "${cat (toJSON { foo = "bar"; })} | jq -r .foo"
cat = s: "printf '%s' ${escape s}";
}
|