summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@vps-18a7a2b7.vps.ovh.ca>2024-01-24 12:46:07 -0500
committerroot <root@vps-18a7a2b7.vps.ovh.ca>2024-01-24 12:46:07 -0500
commit99eaed7389a34198761c62393e470a9ab87d25c7 (patch)
tree66a71a1b8a350ec23fc843c92f68835f0775fc17
parent9434a1f76f17471cd849ec8ccfd09a5e5ef51f71 (diff)
export-json will ensure no output to stdout in case of error
-rw-r--r--wordpress/export-json.bash45
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
58var_to_env0() 58arg1_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
91env0_to_JSON() 90env0_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
102warn() 100export_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
107export_JSON() 108safe_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
120export_JSON()
121{
122 safe_stdout export_JSON_simple "$@"
114} 123}
115 124
116try() 125try()
117{ 126{
118 "$@" 127 "$@"
119 warn "${*@Q} -> $?" 128 : printf '%s -> %s\n' "${*@Q}" "$?" >&2
120} 129}
121 130
122runtest() 131runtest()