From 99eaed7389a34198761c62393e470a9ab87d25c7 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 24 Jan 2024 12:46:07 -0500 Subject: export-json will ensure no output to stdout in case of error --- wordpress/export-json.bash | 45 +++++++++++++++++++++++++++------------------ 1 file 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 @@ # of life # consciousness is reached. -var_to_env0() +arg1_to_env0() { case "$1" in *[^a-zA-Z0-9_=]* ) - false - ;; - [a-zA-Z_]*=* ) - set -- "${1#*=}" "${1%%=*}" + echo "Error: invalid variable: '$1'" >&2 + return 10 ;; [a-zA-Z_]* ) - set -- "$1" "$1" + set -- "${1#*=}" "${1%%=*}" ;; * ) - false + echo "Error: invalid variable: '$1'" >&2 + return 20 ;; - esac && + esac if [ -v "$2" ] then printf '%s=%s\0' "$1" "${!2}" else - warn "Warning: ignoring unset variable: '$2'" + echo "Warning: ignoring unset variable: '$2'" >&2 fi } @@ -83,14 +82,13 @@ vars_to_env0() { while [ $# -gt 0 ] do - var_to_env0 "$1" || return + arg1_to_env0 "$1" || return shift done } env0_to_JSON() { - local REPLY set -- while read -d '' do @@ -99,24 +97,35 @@ env0_to_JSON() jq -n -r '$ARGS.named' "$@" } -warn() +export_JSON_simple() { - printf '%s\n' "$*" >&2 + ( + set -o pipefail + vars_to_env0 "$@" | env0_to_JSON + ) } -export_JSON() +safe_stdout() { + set -- "$(mktemp)" "$@" ( - set -e - set -o pipefail - vars_to_env0 "$@" | env0_to_JSON + exec 3>"$1" 4<"$1" + shift + "$@" >&3 && cat <&4 ) + rm "$1" +} + + +export_JSON() +{ + safe_stdout export_JSON_simple "$@" } try() { "$@" - warn "${*@Q} -> $?" + : printf '%s -> %s\n' "${*@Q}" "$?" >&2 } runtest() -- cgit v1.2.3