summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@vps-18a7a2b7.vps.ovh.ca>2024-01-25 16:58:29 -0500
committerroot <root@vps-18a7a2b7.vps.ovh.ca>2024-01-25 16:58:29 -0500
commitc0847adfdcc8501fc4bfe87cbf71a67cadd2ae98 (patch)
treeb82fda1d8abb9625bc6f71d81c0977aefa89f723
parente7895cdd494774e8202c339af8eb48f06e90dd41 (diff)
"to_JSON_all -a" exports all bash variable values (whether string, array, or assoc array) into a single JSON object
-rw-r--r--wordpress/export-json.bash50
1 files 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()
94 done 94 done
95} 95}
96 96
97to_JSON_all()
98{
99 (
100 if [ "$1" = '-a' ]
101 then
102 jq_env
103 fi
104 set -- $(compgen -A arrayvar)
105 while [ $# -gt 0 ]
106 do
107 to_JSON "$1"
108 shift
109 done
110 ) |
111 jq -s 'add'
112}
113
97to_JSON() 114to_JSON()
98{ 115{
99 case "$1" in 116 case "$1" in
100 -A | -a ) 117 -A | -a )
101 ( 118 to_JSON_all "$@"
102 if [ "$1" = '-a' ]
103 then
104 jq_env
105 fi
106 set -- $(compgen -A arrayvar)
107 while [ $# -gt 0 ]
108 do
109 to_JSON "$1"
110 shift
111 done
112 ) |
113 jq -s 'add'
114 return 119 return
115 ;; 120 ;;
116 esac 121 esac
@@ -119,24 +124,26 @@ to_JSON()
119 *a* ) 124 *a* )
120 ( 125 (
121 eval "set -- \"\$1\" --args \"\${${1}[@]}\"" && 126 eval "set -- \"\$1\" --args \"\${${1}[@]}\"" &&
122 jq -n '{ ($v): $ARGS.positional }' \ 127 jq -n '{ ($k): $ARGS.positional }' \
123 --arg v "$@" 128 --arg k "$@"
124 ) 129 )
125 ;; 130 ;;
126 *A* ) 131 *A* )
127 ( 132 (
128 eval "set -- \"\${!${1}[@]}\" \"\${${1}[@]}\"" && 133 eval 'set -- --arg k "'${1}'" --args \
129 if [ $# -eq 0 ] 134 "${!'${1}'[@]}" \
135 "${'${1}'[@]}"'
136 if [ $# -gt 4 ]
130 then 137 then
131 jq -n '{}' 138 jq -n "{ (\$k): $(jq_zip2) }" "$@"
132 else 139 else
133 jq -n "$(jq_zip2)" --args "$@" 140 jq -n '{ ($k): {} }' "$@"
134 fi 141 fi
135 ) | jq '{ ($v): . }' --arg v "$1" 142 )
136 ;; 143 ;;
137 * ) 144 * )
138 [ -v "$1" ] && 145 [ -v "$1" ] &&
139 jq -n '$x' --arg x "${!1}" 146 jq -n '{ ($k): $v }' --arg k "$1" --arg v "${!1}"
140 ;; 147 ;;
141 esac 148 esac
142} 149}
@@ -232,4 +239,5 @@ runtest()
232 emptyvar= try jq_env .emptyvar 239 emptyvar= try jq_env .emptyvar
233 try jq_exports '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}' 240 try jq_exports '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}'
234 try jq_env '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}' 241 try jq_env '.|{TERM,LANG,HOSTTYPE,EDITOR,SHELL}'
242 try to_JSON PATH BASH_ARGV BASH_VERSINFO BASH_ALIASES BASH_CMDS
235} 243}