diff options
author | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-01-25 16:58:29 -0500 |
---|---|---|
committer | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-01-25 16:58:29 -0500 |
commit | c0847adfdcc8501fc4bfe87cbf71a67cadd2ae98 (patch) | |
tree | b82fda1d8abb9625bc6f71d81c0977aefa89f723 | |
parent | e7895cdd494774e8202c339af8eb48f06e90dd41 (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.bash | 50 |
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 | ||
97 | to_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 | |||
97 | to_JSON() | 114 | to_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 | } |