diff options
author | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-01-24 12:46:07 -0500 |
---|---|---|
committer | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-01-24 12:46:07 -0500 |
commit | 99eaed7389a34198761c62393e470a9ab87d25c7 (patch) | |
tree | 66a71a1b8a350ec23fc843c92f68835f0775fc17 | |
parent | 9434a1f76f17471cd849ec8ccfd09a5e5ef51f71 (diff) |
export-json will ensure no output to stdout in case of error
-rw-r--r-- | wordpress/export-json.bash | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/wordpress/export-json.bash b/wordpress/export-json.bash index 735a649..dce77dc 100644 --- a/wordpress/export-json.bash +++ b/wordpress/export-json.bash | |||
@@ -55,27 +55,26 @@ | |||
55 | # of life | 55 | # of life |
56 | # consciousness is reached. | 56 | # consciousness is reached. |
57 | 57 | ||
58 | var_to_env0() | 58 | arg1_to_env0() |
59 | { | 59 | { |
60 | case "$1" in | 60 | case "$1" in |
61 | *[^a-zA-Z0-9_=]* ) | 61 | *[^a-zA-Z0-9_=]* ) |
62 | false | 62 | echo "Error: invalid variable: '$1'" >&2 |
63 | ;; | 63 | return 10 |
64 | [a-zA-Z_]*=* ) | ||
65 | set -- "${1#*=}" "${1%%=*}" | ||
66 | ;; | 64 | ;; |
67 | [a-zA-Z_]* ) | 65 | [a-zA-Z_]* ) |
68 | set -- "$1" "$1" | 66 | set -- "${1#*=}" "${1%%=*}" |
69 | ;; | 67 | ;; |
70 | * ) | 68 | * ) |
71 | false | 69 | echo "Error: invalid variable: '$1'" >&2 |
70 | return 20 | ||
72 | ;; | 71 | ;; |
73 | esac && | 72 | esac |
74 | if [ -v "$2" ] | 73 | if [ -v "$2" ] |
75 | then | 74 | then |
76 | printf '%s=%s\0' "$1" "${!2}" | 75 | printf '%s=%s\0' "$1" "${!2}" |
77 | else | 76 | else |
78 | warn "Warning: ignoring unset variable: '$2'" | 77 | echo "Warning: ignoring unset variable: '$2'" >&2 |
79 | fi | 78 | fi |
80 | } | 79 | } |
81 | 80 | ||
@@ -83,14 +82,13 @@ vars_to_env0() | |||
83 | { | 82 | { |
84 | while [ $# -gt 0 ] | 83 | while [ $# -gt 0 ] |
85 | do | 84 | do |
86 | var_to_env0 "$1" || return | 85 | arg1_to_env0 "$1" || return |
87 | shift | 86 | shift |
88 | done | 87 | done |
89 | } | 88 | } |
90 | 89 | ||
91 | env0_to_JSON() | 90 | env0_to_JSON() |
92 | { | 91 | { |
93 | local REPLY | ||
94 | set -- | 92 | set -- |
95 | while read -d '' | 93 | while read -d '' |
96 | do | 94 | do |
@@ -99,24 +97,35 @@ env0_to_JSON() | |||
99 | jq -n -r '$ARGS.named' "$@" | 97 | jq -n -r '$ARGS.named' "$@" |
100 | } | 98 | } |
101 | 99 | ||
102 | warn() | 100 | export_JSON_simple() |
103 | { | 101 | { |
104 | printf '%s\n' "$*" >&2 | 102 | ( |
103 | set -o pipefail | ||
104 | vars_to_env0 "$@" | env0_to_JSON | ||
105 | ) | ||
105 | } | 106 | } |
106 | 107 | ||
107 | export_JSON() | 108 | safe_stdout() |
108 | { | 109 | { |
110 | set -- "$(mktemp)" "$@" | ||
109 | ( | 111 | ( |
110 | set -e | 112 | exec 3>"$1" 4<"$1" |
111 | set -o pipefail | 113 | shift |
112 | vars_to_env0 "$@" | env0_to_JSON | 114 | "$@" >&3 && cat <&4 |
113 | ) | 115 | ) |
116 | rm "$1" | ||
117 | } | ||
118 | |||
119 | |||
120 | export_JSON() | ||
121 | { | ||
122 | safe_stdout export_JSON_simple "$@" | ||
114 | } | 123 | } |
115 | 124 | ||
116 | try() | 125 | try() |
117 | { | 126 | { |
118 | "$@" | 127 | "$@" |
119 | warn "${*@Q} -> $?" | 128 | : printf '%s -> %s\n' "${*@Q}" "$?" >&2 |
120 | } | 129 | } |
121 | 130 | ||
122 | runtest() | 131 | runtest() |