summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@vps-18a7a2b7.vps.ovh.ca>2024-01-24 22:59:17 -0500
committerroot <root@vps-18a7a2b7.vps.ovh.ca>2024-01-24 22:59:17 -0500
commitacc9b39143fb5b9e21ce51564786a151ee854c9c (patch)
tree307381a509550856b981180b2fa87a1e2f92c2dd
parent7f62ce22d8ea5ecbacb117b44524d7839c305fae (diff)
support for bash arrays and associative arrays
-rw-r--r--wordpress/export-json.bash43
1 files 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()
85 fi 85 fi
86} 86}
87 87
88vars_to_env0() 88export_to_env0()
89{ 89{
90 while [ $# -gt 0 ] 90 while [ $# -gt 0 ]
91 do 91 do
@@ -94,6 +94,43 @@ vars_to_env0()
94 done 94 done
95} 95}
96 96
97to_JSON()
98{
99 [ $# = 1 ] || return
100 case "${!1@a}" in
101 *a* )
102 (
103 eval "set -- \${${1}[@]}" &&
104 jq -n '$ARGS.positional' --args "$@"
105 )
106 ;;
107 *A* )
108 (
109 eval "set -- \"\${!${1}[@]}\" \"\${${1}[@]}\"" &&
110 jq -n "$(jq_zip2)" --args "$@"
111 )
112 ;;
113 * )
114 [ -v "$1" ] &&
115 jq -n '$x' --arg x "${!1}"
116 ;;
117 esac
118}
119
120jq_zip2()
121{
122 cat <<'END'
123$ARGS.positional |
124[
125 .[ : length/2 ],
126 .[ length/2 : ]
127] |
128transpose |
129map ({ (.[0]): .[1] }) |
130add
131END
132}
133
97env0_to_JSON() 134env0_to_JSON()
98{ 135{
99 set -- 136 set --
@@ -108,7 +145,7 @@ export_JSON_unsafe()
108{ 145{
109 ( 146 (
110 set -o pipefail 147 set -o pipefail
111 vars_to_env0 "$@" | env0_to_JSON 148 export_to_env0 "$@" | env0_to_JSON
112 ) 149 )
113} 150}
114 151
@@ -126,7 +163,7 @@ safety_pipe()
126 163
127export_JSON() 164export_JSON()
128{ 165{
129 safety_pipe env0_to_JSON vars_to_env0 "$@" 166 safety_pipe env0_to_JSON export_to_env0 "$@"
130} 167}
131 168
132filter_vars() 169filter_vars()