From c0847adfdcc8501fc4bfe87cbf71a67cadd2ae98 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 25 Jan 2024 16:58:29 -0500 Subject: "to_JSON_all -a" exports all bash variable values (whether string, array, or assoc array) into a single JSON object --- wordpress/export-json.bash | 50 +++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/wordpress/export-json.bash b/wordpress/export-json.bash index da6f500..3852dea 100644 --- a/wordpress/export-json.bash +++ b/wordpress/export-json.bash @@ -94,23 +94,28 @@ export_to_env0() done } +to_JSON_all() +{ + ( + if [ "$1" = '-a' ] + then + jq_env + fi + set -- $(compgen -A arrayvar) + while [ $# -gt 0 ] + do + to_JSON "$1" + shift + done + ) | + jq -s 'add' +} + to_JSON() { case "$1" in -A | -a ) - ( - if [ "$1" = '-a' ] - then - jq_env - fi - set -- $(compgen -A arrayvar) - while [ $# -gt 0 ] - do - to_JSON "$1" - shift - done - ) | - jq -s 'add' + to_JSON_all "$@" return ;; esac @@ -119,24 +124,26 @@ to_JSON() *a* ) ( eval "set -- \"\$1\" --args \"\${${1}[@]}\"" && - jq -n '{ ($v): $ARGS.positional }' \ - --arg v "$@" + jq -n '{ ($k): $ARGS.positional }' \ + --arg k "$@" ) ;; *A* ) ( - eval "set -- \"\${!${1}[@]}\" \"\${${1}[@]}\"" && - if [ $# -eq 0 ] + eval 'set -- --arg k "'${1}'" --args \ + "${!'${1}'[@]}" \ + "${'${1}'[@]}"' + if [ $# -gt 4 ] then - jq -n '{}' + jq -n "{ (\$k): $(jq_zip2) }" "$@" else - jq -n "$(jq_zip2)" --args "$@" + jq -n '{ ($k): {} }' "$@" fi - ) | jq '{ ($v): . }' --arg v "$1" + ) ;; * ) [ -v "$1" ] && - jq -n '$x' --arg x "${!1}" + jq -n '{ ($k): $v }' --arg k "$1" --arg v "${!1}" ;; esac } @@ -232,4 +239,5 @@ runtest() emptyvar= try jq_env .emptyvar try jq_exports '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}' try jq_env '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}' + try to_JSON PATH BASH_ARGV BASH_VERSINFO BASH_ALIASES BASH_CMDS } -- cgit v1.2.3