diff options
Diffstat (limited to 'wordpress/export-json.bash')
-rw-r--r-- | wordpress/export-json.bash | 43 |
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 | ||
88 | vars_to_env0() | 88 | export_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 | ||
97 | to_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 | |||
120 | jq_zip2() | ||
121 | { | ||
122 | cat <<'END' | ||
123 | $ARGS.positional | | ||
124 | [ | ||
125 | .[ : length/2 ], | ||
126 | .[ length/2 : ] | ||
127 | ] | | ||
128 | transpose | | ||
129 | map ({ (.[0]): .[1] }) | | ||
130 | add | ||
131 | END | ||
132 | } | ||
133 | |||
97 | env0_to_JSON() | 134 | env0_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 | ||
127 | export_JSON() | 164 | export_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 | ||
132 | filter_vars() | 169 | filter_vars() |