From acc9b39143fb5b9e21ce51564786a151ee854c9c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 24 Jan 2024 22:59:17 -0500 Subject: support for bash arrays and associative arrays --- wordpress/export-json.bash | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/wordpress/export-json.bash b/wordpress/export-json.bash index fd48afe..82a39b8 100644 --- a/wordpress/export-json.bash +++ b/wordpress/export-json.bash @@ -85,7 +85,7 @@ arg1_to_env0() fi } -vars_to_env0() +export_to_env0() { while [ $# -gt 0 ] do @@ -94,6 +94,43 @@ vars_to_env0() done } +to_JSON() +{ + [ $# = 1 ] || return + case "${!1@a}" in + *a* ) + ( + eval "set -- \${${1}[@]}" && + jq -n '$ARGS.positional' --args "$@" + ) + ;; + *A* ) + ( + eval "set -- \"\${!${1}[@]}\" \"\${${1}[@]}\"" && + jq -n "$(jq_zip2)" --args "$@" + ) + ;; + * ) + [ -v "$1" ] && + jq -n '$x' --arg x "${!1}" + ;; + esac +} + +jq_zip2() +{ + cat <<'END' +$ARGS.positional | +[ + .[ : length/2 ], + .[ length/2 : ] +] | +transpose | +map ({ (.[0]): .[1] }) | +add +END +} + env0_to_JSON() { set -- @@ -108,7 +145,7 @@ export_JSON_unsafe() { ( set -o pipefail - vars_to_env0 "$@" | env0_to_JSON + export_to_env0 "$@" | env0_to_JSON ) } @@ -126,7 +163,7 @@ safety_pipe() export_JSON() { - safety_pipe env0_to_JSON vars_to_env0 "$@" + safety_pipe env0_to_JSON export_to_env0 "$@" } filter_vars() -- cgit v1.2.3