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