jshn: add json_get_values (useful for arrays)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
parent
a2453456f2
commit
b5aa522f5d
1 changed files with 25 additions and 0 deletions
25
sh/jshn.sh
25
sh/jshn.sh
|
@ -12,6 +12,15 @@ _json_set_var() {
|
||||||
eval "${JSON_PREFIX}$___var=\"\$___val\""
|
eval "${JSON_PREFIX}$___var=\"\$___val\""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__jshn_raw_append() {
|
||||||
|
local var="$1"
|
||||||
|
local value="$2"
|
||||||
|
local sep="${3:- }"
|
||||||
|
|
||||||
|
eval "export -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
_jshn_append() {
|
_jshn_append() {
|
||||||
local __var="$1"
|
local __var="$1"
|
||||||
local __value="$2"
|
local __value="$2"
|
||||||
|
@ -214,6 +223,22 @@ json_get_keys() {
|
||||||
eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
|
eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
json_get_values() {
|
||||||
|
local _v_dest="$1"
|
||||||
|
local _v_keys _v_val
|
||||||
|
|
||||||
|
unset "$_v_dest"
|
||||||
|
json_get_keys _v_keys "$2"
|
||||||
|
json_select "$2"
|
||||||
|
set -- $_v_keys
|
||||||
|
while [ "$#" -gt 0 ]; do
|
||||||
|
json_get_var _v_val "$1"
|
||||||
|
__jshn_raw_append "$_v_dest" "$_v_val"
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
json_select ..
|
||||||
|
}
|
||||||
|
|
||||||
json_get_var() {
|
json_get_var() {
|
||||||
local __dest="$1"
|
local __dest="$1"
|
||||||
local __cur
|
local __cur
|
||||||
|
|
Loading…
Reference in a new issue