diff options
-rw-r--r-- | wordpress/export-json.bash | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/wordpress/export-json.bash b/wordpress/export-json.bash index fa1f41e..fd48afe 100644 --- a/wordpress/export-json.bash +++ b/wordpress/export-json.bash | |||
@@ -112,23 +112,42 @@ export_JSON_unsafe() | |||
112 | ) | 112 | ) |
113 | } | 113 | } |
114 | 114 | ||
115 | safe_stdout() | 115 | safety_pipe() |
116 | { | 116 | { |
117 | set -- "$(mktemp)" "$@" | 117 | [ $# -ge 2 ] || return |
118 | if (shift; "$@") > "$1" | 118 | set -- "$(mktemp)" "$@" || return |
119 | if (shift 2; "$@") > "$1" | ||
119 | then | 120 | then |
120 | set -- "$1" 0 | 121 | "$2" < "$1" |
121 | cat < "$1" | ||
122 | else | 122 | else |
123 | set -- "$1" $? | 123 | return $? |
124 | fi | 124 | fi |
125 | rm "$1" | ||
126 | return $2 | ||
127 | } | 125 | } |
128 | 126 | ||
129 | export_JSON() | 127 | export_JSON() |
130 | { | 128 | { |
131 | safe_stdout export_JSON_unsafe "$@" | 129 | safety_pipe env0_to_JSON vars_to_env0 "$@" |
130 | } | ||
131 | |||
132 | filter_vars() | ||
133 | { | ||
134 | while read | ||
135 | do | ||
136 | if [ -v "$REPLY" ] | ||
137 | then | ||
138 | printf '%s\n' "$REPLY" | ||
139 | fi | ||
140 | done | ||
141 | } | ||
142 | |||
143 | jq_env() | ||
144 | { | ||
145 | export_JSON $(compgen -v | filter_vars) | jq "$@" | ||
146 | } | ||
147 | |||
148 | jq_exports() | ||
149 | { | ||
150 | export_JSON $(compgen -e | filter_vars) | jq "$@" | ||
132 | } | 151 | } |
133 | 152 | ||
134 | try() | 153 | try() |
@@ -146,6 +165,10 @@ runtest() | |||
146 | try export_JSON unsetvar SSH_TTY | 165 | try export_JSON unsetvar SSH_TTY |
147 | try export_JSON | 166 | try export_JSON |
148 | try export_JSON '' | 167 | try export_JSON '' |
149 | try export_JSON '' SSH_TTY | 168 | try export_JSON 'invalid!' SSH_TTY |
150 | try export_JSON SSH_TTY '' | 169 | try export_JSON SSH_TTY 'invalid!' |
170 | try jq_env .unsetvar | ||
171 | emptyvar= try jq_env .emptyvar | ||
172 | try jq_exports '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}' | ||
173 | try jq_env '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}' | ||
151 | } | 174 | } |