blob: b48e59ca508c6ea7f0316f18000e39953cdecf6d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#!/usr/bin/env cat
# Push, Encodes arrays correctly as strings with Posix Shell only.
# Meaning we can use this script in any Posix shell (bash, zsh, ksh, dash, ...).
#
# taken from: https://github.com/vaeth/push/blob/main/bin/push.sh
Push() {
case $1 in
-c)
PushA_=
shift;;
*)
eval PushA_=\$$1;;
esac
PushB_=$1
shift
for PushE_
do [ -z "${PushA_:++}" ] || PushA_="$PushA_ "
unset PushF_
case ${PushE_:-=} in
[=~]*)
PushF_=false;;
esac
PushC_=$PushE_
while PushD_=${PushC_%%\'*}
do if ${PushF_-:} && case $PushD_ in
*[!-+=~@%/:.,_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*)
false;;
esac
then PushA_=$PushA_$PushD_
else PushA_="$PushA_'$PushD_'"
unset PushF_
fi
[ x"$PushD_" = x"$PushC_" ] && break || \
PushA_=$PushA_\\\'
PushC_=${PushC_#*\'}
done
done
eval "$PushB_=\$PushA_
unset PushA_ PushB_ PushC_ PushD_ PushE_
[ -n \"\${$PushB_:++}\" ]" || return 1
}
|