2017-03-07 16:48:11 +04:00
|
|
|
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
|
|
## Fonction de support pour gérer le déploiement d'artifacts
|
|
|
|
##@cooked nocomments
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# API publique
|
|
|
|
|
|
|
|
function deploy_query() {
|
|
|
|
# Afficher le résultat d'une requête
|
2017-03-09 06:39:33 +04:00
|
|
|
local alv
|
|
|
|
eval "set -- $(getopt -ov: -lallow-vars: -- "$@")"
|
|
|
|
while [ -n "$1" ]; do
|
|
|
|
case "$1" in
|
|
|
|
-v|--allow-vars)
|
|
|
|
array_split alv "$2" ,
|
|
|
|
shift; shift
|
|
|
|
;;
|
|
|
|
--) shift; break;;
|
|
|
|
*) break;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2017-03-07 16:48:11 +04:00
|
|
|
local qtype="$1" otype="$2" ltype="$3" profile="$4" format="${5:-shell}" term="$6"
|
|
|
|
local -a vs; local object type link
|
|
|
|
|
|
|
|
case "$qtype" in
|
|
|
|
DEST|SOURCE)
|
2017-03-09 06:39:33 +04:00
|
|
|
if [ -n "$otype" ]; then
|
|
|
|
deploy_is_type "$otype" || {
|
|
|
|
qvals false "$otype: invalid type"
|
|
|
|
return 2
|
|
|
|
}
|
|
|
|
fi
|
2017-03-07 16:48:11 +04:00
|
|
|
;;
|
|
|
|
*)
|
2017-03-09 06:39:33 +04:00
|
|
|
if [ -n "$qtype" ]; then
|
|
|
|
deploy_is_type "$qtype" || {
|
|
|
|
qvals false "$qtype: invalid type"
|
|
|
|
return 3
|
|
|
|
}
|
|
|
|
fi
|
2017-03-07 16:48:11 +04:00
|
|
|
;;
|
|
|
|
esac
|
2017-03-09 06:39:33 +04:00
|
|
|
if [ -n "$ltype" ]; then
|
|
|
|
deploy_is_link "$ltype" || {
|
|
|
|
qvals false "$ltype: invalid link type"
|
|
|
|
return 4
|
|
|
|
}
|
|
|
|
fi
|
|
|
|
[ -n "$term" ] || {
|
|
|
|
qvals false "search term required"
|
|
|
|
return 5
|
|
|
|
}
|
2017-03-07 16:48:11 +04:00
|
|
|
|
|
|
|
case "$qtype" in
|
|
|
|
DEST)
|
|
|
|
edebug "=== search type DEST"
|
|
|
|
edebug "term=$term, otype=$otype"
|
2017-03-09 06:39:33 +04:00
|
|
|
deploy_search_artifact object type "$term" "$otype" host || {
|
|
|
|
qvals false "artifact not found"
|
|
|
|
return 1
|
|
|
|
}
|
2017-03-07 16:48:11 +04:00
|
|
|
edebug "object=$object, type=$type"
|
2017-03-09 06:39:33 +04:00
|
|
|
deploy_search_link link "$type" "$ltype" || {
|
|
|
|
qvals false "link not found"
|
|
|
|
return 1
|
|
|
|
}
|
2017-03-07 16:48:11 +04:00
|
|
|
|
2017-03-09 06:39:33 +04:00
|
|
|
deploy_show_values object object "$format" shell alv
|
|
|
|
deploy_show_values type otype "$format" shell alv
|
|
|
|
deploy_show_values link ltype "$format" shell alv
|
|
|
|
deploy_show_links "$object" "$link" "$profile" "$format" "" alv
|
2017-03-07 16:48:11 +04:00
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
SOURCE)
|
|
|
|
# XXX implémenter
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
if deploy_search_artifact object type "$term" "$qtype"; then
|
|
|
|
deploy_copy_object_values vs "$object" "$type"
|
2017-03-09 06:39:33 +04:00
|
|
|
deploy_show_values object object "$format" shell alv
|
|
|
|
deploy_show_values type otype "$format" shell alv
|
|
|
|
deploy_show_values vs "$type" "$format" "" alv
|
|
|
|
deploy_show_attrs "$object" "$type" "$format" alv
|
2017-03-07 16:48:11 +04:00
|
|
|
return 0
|
|
|
|
fi
|
2017-03-09 06:39:33 +04:00
|
|
|
qvals false "artifact not found"
|
2017-03-07 16:48:11 +04:00
|
|
|
return 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_setconf() {
|
2017-03-09 06:39:33 +04:00
|
|
|
local confname="$1" confdir="$2"
|
|
|
|
if [ -n "$confdir" ]; then
|
|
|
|
confdir="$(abspath "$confdir")"
|
|
|
|
if [[ "$confname" == */* ]] || [[ "$confname" == *.* ]]; then
|
|
|
|
local d="$(abspath "$(dirname -- "$confname")")"
|
|
|
|
if [ "$d" != "$confdir" ]; then
|
|
|
|
CONFNAME="$confname"
|
|
|
|
SFILE="$CONFNAME"
|
|
|
|
DFILE="${CONFNAME%.conf}.vars"
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
confname="$(basename -- "$confname" .conf)"
|
2017-03-07 16:48:11 +04:00
|
|
|
fi
|
2017-03-09 06:39:33 +04:00
|
|
|
CONFNAME="${confname:-deploy}"
|
|
|
|
IFILE="$confdir/init.conf"
|
|
|
|
SFILE="$confdir/$CONFNAME.conf"
|
|
|
|
else
|
|
|
|
CONFNAME="${confname:-deploy}"
|
|
|
|
IFILE=
|
|
|
|
SFILE=
|
2017-03-08 00:48:52 +04:00
|
|
|
fi
|
|
|
|
if is_root; then
|
|
|
|
DFILE="/var/local/deploy/$CONFNAME.vars"
|
|
|
|
else
|
|
|
|
DFILE="$HOME/etc/deploy/$CONFNAME.vars"
|
2017-03-07 16:48:11 +04:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_loadconf() {
|
2017-03-09 06:39:33 +04:00
|
|
|
# charger la configuration. deploy_setconf() DOIT être appelé avant
|
2017-03-07 16:48:11 +04:00
|
|
|
if [ "$1" != --no-auto-update ]; then (
|
|
|
|
# mettre à jour le cas échéant le fichier des variables
|
|
|
|
DEPLOY_SRCDIR=; set_defaults deploy
|
|
|
|
[ -n "$DEPLOY_SRCDIR" ] || DEPLOY_SRCDIR=~/wop/deploy
|
|
|
|
[ -x "$DEPLOY_SRCDIR/query" ] && "$DEPLOY_SRCDIR/query" --nop -c "$CONFNAME"
|
|
|
|
); fi
|
2017-03-08 00:48:52 +04:00
|
|
|
[ -f "$DFILE" ] && source "$DFILE" || return 1
|
2017-03-07 16:48:11 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_search_artifact() {
|
|
|
|
local do="$1" dt="$2" term="$3" type="$4" nottype="$5"
|
|
|
|
local -a ts os vs; local t o v object
|
|
|
|
|
|
|
|
deploy_copy_types ts
|
|
|
|
for t in "${ts[@]}"; do
|
|
|
|
[ -n "$type" -a "$t" != "$type" ] && continue
|
|
|
|
[ -n "$nottype" -a "$t" == "$nottype" ] && continue
|
|
|
|
|
|
|
|
object=
|
|
|
|
if deploy_is_object "$term" "$t"; then
|
|
|
|
# on a déjà le bon identifiant
|
|
|
|
object="$term"
|
|
|
|
else
|
|
|
|
# chercher un identifiant correspondant à la valeur
|
|
|
|
deploy_copy_objects os "$t"
|
|
|
|
for o in "${os[@]}"; do
|
|
|
|
deploy_copy_object_values vs "$o" "$t"
|
|
|
|
if array_contains vs "$term"; then
|
|
|
|
object="$o"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
if [[ "$term" != *.* ]]; then
|
|
|
|
for v in "${vs[@]}"; do
|
|
|
|
if [ "${v%%.*}" == "$term" ]; then
|
|
|
|
object="$o"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if [ -z "$object" ]; then
|
|
|
|
# essayer sans tenir compte de la casse
|
|
|
|
for o in "${os[@]}"; do
|
|
|
|
if [ "${o,,}" == "${term,,}" ]; then
|
|
|
|
object="$o"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
deploy_copy_object_values vs "$o" "$t"
|
|
|
|
for v in "${vs[@]}"; do
|
|
|
|
if [ "${v,,}" == "${term,,}" ]; then
|
|
|
|
object="$o"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if [[ "$term" != *.* ]]; then
|
|
|
|
for v in "${vs[@]}"; do
|
|
|
|
v="${v%%.*}"
|
|
|
|
if [ "${v,,}" == "${term,,}" ]; then
|
|
|
|
object="$o"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ -n "$object" ]; then
|
|
|
|
upvars "$do" "$object" "$dt" "$t"
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_search_link() {
|
|
|
|
local dl="$1" type="$2" link="$3"
|
|
|
|
local -a ls ts; local l
|
|
|
|
deploy_copy_links ls
|
|
|
|
for l in "${ls[@]}"; do
|
|
|
|
[ -n "$link" -a "$l" != "$link" ] && continue
|
|
|
|
|
|
|
|
deploy_copy_link_types ts "$l"
|
|
|
|
if array_contains ts "$type"; then
|
|
|
|
upvar "$dl" "$l"
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_show_values() {
|
2017-03-09 06:39:33 +04:00
|
|
|
if [ -n "$5" ]; then
|
|
|
|
if ! array_isempty "$5"; then
|
|
|
|
array_contains "$5" "$2" || return
|
|
|
|
fi
|
|
|
|
fi
|
2017-03-07 16:48:11 +04:00
|
|
|
local -a __sv_vs; array_copy __sv_vs "$1"
|
|
|
|
local -a vs; array_copy vs __sv_vs
|
|
|
|
local t="$2" f="${3:-shell}" ff="$4"
|
|
|
|
[ -n "$ff" -a "$f" != "$ff" ] && return
|
|
|
|
|
|
|
|
case "$f" in
|
2017-03-09 06:39:33 +04:00
|
|
|
shell)
|
|
|
|
[ -n "$5" ] && echo "$t=()"
|
|
|
|
deploy_dump_values "$t" vs
|
|
|
|
;;
|
2017-03-07 16:48:11 +04:00
|
|
|
line) array_to_lines vs;;
|
|
|
|
*) array_join vs "$f";;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_show_attrs() {
|
2017-03-09 06:39:33 +04:00
|
|
|
if [ -n "$4" ]; then
|
|
|
|
local -a __dsa_alv; array_copy __dsa_alv "$4"
|
|
|
|
local -a alv; array_copy alv __dsa_alv
|
|
|
|
fi
|
2017-03-07 16:48:11 +04:00
|
|
|
local o="$1" t="$2" f="${3:-shell}" ff=shell
|
|
|
|
[ -n "$ff" -a "$f" != "$ff" ] && return
|
|
|
|
|
|
|
|
local -a ons gns ans vs; local an
|
|
|
|
deploy_prepare_copy_attrs ons gns "$o" "$t"
|
|
|
|
deploy_copy_attr_names ans "$o" "$t" ons gns
|
|
|
|
for an in "${ans[@]}"; do
|
2017-03-09 06:39:33 +04:00
|
|
|
if [ -n "$4" ]; then
|
|
|
|
if ! array_isempty "$4"; then
|
|
|
|
array_contains alv "$an" || continue
|
|
|
|
fi
|
|
|
|
[ "$f" == shell ] && echo "$an=()"
|
|
|
|
fi
|
2017-03-07 16:48:11 +04:00
|
|
|
deploy_copy_attr_values vs "$an" "$o" "$t" ons
|
|
|
|
deploy_dump_values "$an" vs
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_show_links() {
|
2017-03-09 06:39:33 +04:00
|
|
|
if [ -n "$6" ]; then
|
|
|
|
local -a __dsl_alv; array_copy __dsl_alv "$6"
|
|
|
|
local -a alv; array_copy alv __dsl_alv
|
|
|
|
fi
|
2017-03-07 16:48:11 +04:00
|
|
|
local o="$1" l="$2" profile="$3" f="${4:-shell}" ff="$5"
|
|
|
|
local -a ps pons pgns ons gns ans ovs os; local p an av o
|
|
|
|
[ -n "$ff" -a "$f" != "$ff" ] && return
|
|
|
|
|
|
|
|
deploy_copy_profiles ps 1
|
|
|
|
for p in "${ps[@]}"; do
|
|
|
|
[ -n "$profile" -a "$p" != "$profile" ] && continue
|
2017-03-09 06:39:33 +04:00
|
|
|
deploy_show_values p profile "$format" shell alv
|
2017-03-07 16:48:11 +04:00
|
|
|
|
|
|
|
deploy_prepare_copy_link_attrs pons pgns ons gns "$o" "$l" "$p"
|
|
|
|
deploy_copy_link_attr_names ans "$o" "$l" "$p" pons pgns ons gns
|
|
|
|
for an in "${ans[@]}"; do
|
|
|
|
deploy_copy_link_attr_values avs "$an" "$o" "$l" "$p" pons pgns ons gns
|
|
|
|
if [ "$an" == host ]; then
|
|
|
|
# toujours montrer host
|
|
|
|
#deploy_show_values avs "$an" "$f" "$ff"
|
|
|
|
ovs=()
|
|
|
|
for av in "${avs[@]}"; do
|
|
|
|
deploy_copy_object_values os "$av" host
|
|
|
|
array_extendu ovs os
|
|
|
|
done
|
2017-03-09 06:39:33 +04:00
|
|
|
deploy_show_values ovs host "$f" "$ff" alv
|
2017-03-07 16:48:11 +04:00
|
|
|
else
|
2017-03-09 06:39:33 +04:00
|
|
|
deploy_show_values avs "$an" "$f" shell alv
|
2017-03-07 16:48:11 +04:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Fonctions bas niveau
|
|
|
|
|
|
|
|
function deploy_is_profile() {
|
|
|
|
# tester si $1 est un profil valide
|
|
|
|
[ -z "$1" ] && return 0 # pas de profil == profil valide
|
|
|
|
array_contains LISTOF_PROFILES "$1"
|
|
|
|
}
|
|
|
|
function deploy_copy_profiles() {
|
|
|
|
# copier la liste des profils valides dans le tableau $1
|
|
|
|
# si LISTOF_PROFILES est vide et que $2!="", alors mettre une chaine vide
|
|
|
|
# dans le tableau $1
|
|
|
|
array_upvar "$1" "${LISTOF_PROFILES[@]}"
|
|
|
|
if array_isempty "$1" && [ -n "$2" ]; then
|
|
|
|
array_add "$1" ""
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
function deploy_is_type() {
|
|
|
|
# tester si $1 est un type valide
|
|
|
|
array_contains LISTOF_TYPES "$1"
|
|
|
|
}
|
|
|
|
function deploy_copy_types() {
|
|
|
|
# copier la liste des types valides dans le tableau $1
|
|
|
|
array_upvar "$1" "${LISTOF_TYPES[@]}"
|
|
|
|
}
|
|
|
|
function deploy_is_object() {
|
|
|
|
# tester si $1 est un objet valide de type $2
|
|
|
|
local o="$1" t="${2:-host}"
|
|
|
|
array_contains "LISTOF_${t}s" "$o"
|
|
|
|
}
|
|
|
|
function deploy_copy_objects() {
|
|
|
|
# copier la liste des objets valides de type $2 dans le tableau $1
|
|
|
|
local d="$1" t="${2:-host}"
|
|
|
|
local -a os
|
|
|
|
array_copy os "LISTOF_${t}s"
|
|
|
|
array_upvar "$d" "${os[@]}"
|
|
|
|
}
|
|
|
|
function deploy_copy_object_values() {
|
|
|
|
local d="$1" o="$2" t="${3:-host}"
|
|
|
|
local -a vs
|
|
|
|
array_copy vs "${o}_${t}"
|
|
|
|
array_upvar "$d" "${vs[@]}"
|
|
|
|
}
|
|
|
|
function deploy_prepare_copy_attrs() {
|
|
|
|
local dons="$1" dgns="$2" o="$3" t="${4:-host}"
|
|
|
|
local -a ons gns
|
|
|
|
array_copy ons "LISTOF_${o}_${t}_vars"
|
|
|
|
array_copy gns "LISTOF_${t}_vars"
|
|
|
|
upvars \
|
|
|
|
-a${#ons[*]} "$dons" "${ons[@]}" \
|
|
|
|
-a${#gns[*]} "$dgns" "${gns[@]}"
|
|
|
|
}
|
|
|
|
function deploy_copy_attr_names() {
|
|
|
|
local d="$1" o="$2" t="${3:-host}" __pca_ons="$4" __pca_gns="$5"
|
|
|
|
local -a ns
|
|
|
|
if [ -n "$__pca_ons" -a -n "$__pca_gns" ]; then
|
|
|
|
# variables ons et gns déjà préparées par deploy_prepare_copy_attrs()
|
|
|
|
array_copy ns "$__pca_ons"
|
|
|
|
array_extendu ns "$__pca_gns"
|
|
|
|
else
|
|
|
|
local -a ons gns
|
|
|
|
array_copy ons "LISTOF_${o}_${t}_vars"
|
|
|
|
array_copy gns "LISTOF_${t}_vars"
|
|
|
|
array_copy ns ons
|
|
|
|
array_extendu ns gns
|
|
|
|
fi
|
|
|
|
array_upvar "$d" "${ns[@]}"
|
|
|
|
}
|
|
|
|
function deploy_copy_attr_values() {
|
|
|
|
local d="$1" n="$2" o="$3" t="${4:-host}" __pca_ons="$5"
|
|
|
|
local -a vs ns
|
|
|
|
local n
|
|
|
|
if [ -n "$__pca_ons" ]; then
|
|
|
|
# variables ons déjà préparée par deploy_prepare_copy_attrs()
|
|
|
|
if array_contains "$__pca_ons" "$n"; then
|
|
|
|
array_copy vs "${o}_${t}_${n}"
|
|
|
|
else
|
|
|
|
array_copy vs "${t}_${n}"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
local -a ons gns
|
|
|
|
array_copy ons "LISTOF_${o}_${t}_vars"
|
|
|
|
array_copy gns "LISTOF_${t}_vars"
|
|
|
|
if array_contains ons "$n"; then
|
|
|
|
array_copy vs "${o}_${t}_${n}"
|
|
|
|
else
|
|
|
|
array_copy vs "${t}_${n}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
array_upvar "$d" "${vs[@]}"
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_is_link() {
|
|
|
|
# tester si $1 est un type de lien valide
|
|
|
|
array_contains LISTOF_LINKS "$1"
|
|
|
|
}
|
|
|
|
function deploy_copy_links() {
|
|
|
|
array_upvar "$1" "${LISTOF_LINKS[@]}"
|
|
|
|
}
|
|
|
|
function deploy_copy_link_types() {
|
|
|
|
local d="$1" l="${2:-deploy}"
|
|
|
|
local -a ts
|
|
|
|
array_copy ts "LISTOF_${l}_LINKTO"
|
|
|
|
array_upvar "$d" "${ts[@]}"
|
|
|
|
}
|
|
|
|
function deploy_prepare_copy_link_attrs() {
|
|
|
|
local dpons="$1" dpgns="$2" dons="$3" dgns="$4" o="$5" l="${6:-deploy}" p="$7"
|
|
|
|
local -a pons pgns ons gns
|
|
|
|
if [ -n "$p" ]; then
|
|
|
|
array_copy pons "LISTOF_${p}__${o}_${l}_vars"
|
|
|
|
array_copy pgns "LISTOF_${p}__${l}_vars"
|
|
|
|
fi
|
|
|
|
array_copy ons "LISTOF_${o}_${l}_vars"
|
|
|
|
array_copy gns "LISTOF_${l}_vars"
|
|
|
|
upvars \
|
|
|
|
-a${#pons[*]} "$dpons" "${pons[@]}" \
|
|
|
|
-a${#pgns[*]} "$dpgns" "${pgns[@]}" \
|
|
|
|
-a${#ons[*]} "$dons" "${ons[@]}" \
|
|
|
|
-a${#gns[*]} "$dgns" "${gns[@]}"
|
|
|
|
}
|
|
|
|
function deploy_copy_link_attr_names() {
|
|
|
|
local d="$1" o="$2" l="${3:-deploy}" p="$4"
|
|
|
|
local __pca_pons="$5" __pca_pgns="$6" __pca_ons="$7" __pca_gns="$8"
|
|
|
|
local -a ns
|
|
|
|
if [ -n "$__pca_pons" -a -n "$__pca_pgns" -a -n "$__pca_ons" -a -n "$__pca_gns" ]; then
|
|
|
|
# variables pons, pgns, ons et gns déjà préparées par la fonction
|
|
|
|
# deploy_prepare_copy_link_attrs()
|
|
|
|
array_copy ns "$__pca_pons"
|
|
|
|
array_extendu ns "$__pca_pgns"
|
|
|
|
array_extendu ns "$__pca_ons"
|
|
|
|
array_extendu ns "$__pca_gns"
|
|
|
|
else
|
|
|
|
local -a pons pgns ons gns
|
|
|
|
if [ -n "$p" ]; then
|
|
|
|
array_copy pons "LISTOF_${p}__${o}_${l}_vars"
|
|
|
|
array_copy pgns "LISTOF_${p}__${l}_vars"
|
|
|
|
fi
|
|
|
|
array_copy ons "LISTOF_${o}_${l}_vars"
|
|
|
|
array_copy gns "LISTOF_${l}_vars"
|
|
|
|
array_copy ns pons
|
|
|
|
array_extendu ns pgns
|
|
|
|
array_extendu ns ons
|
|
|
|
array_extendu ns gns
|
|
|
|
fi
|
|
|
|
array_upvar "$d" "${ns[@]}"
|
|
|
|
}
|
|
|
|
function deploy_copy_link_attr_values() {
|
|
|
|
local d="$1" n="$2" o="$3" l="${4:-deploy}" p="$5"
|
|
|
|
local __pca_pons="$6" __pca_pgns="$7" __pca_ons="$8" __pca_gns="$9"
|
|
|
|
local -a vs ns
|
|
|
|
local n
|
|
|
|
if [ -n "$__pca_pons" -a -n "$__pca_pgns" -a -n "$__pca_ons" -a -n "$__pca_gns" ]; then
|
|
|
|
# variables pons et ons déjà préparées par la fonction
|
|
|
|
# deploy_prepare_copy_link_attrs()
|
|
|
|
if array_contains "$__pca_pons" "$n"; then
|
|
|
|
array_copy vs "${p}__${o}_${l}_${n}"
|
|
|
|
elif array_contains "$__pca_pgns" "$n"; then
|
|
|
|
array_copy vs "${p}__${l}_${n}"
|
|
|
|
elif array_contains "$__pca_ons" "$n"; then
|
|
|
|
array_copy vs "${o}_${l}_${n}"
|
|
|
|
else
|
|
|
|
array_copy vs "${l}_${n}"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
local -a pons pgns ons gns
|
|
|
|
if [ -n "$p" ]; then
|
|
|
|
array_copy pons "LISTOF_${p}__${o}_${l}_vars"
|
|
|
|
array_copy pgns "LISTOF_${p}__${l}_vars"
|
|
|
|
fi
|
|
|
|
array_copy ons "LISTOF_${o}_${l}_vars"
|
|
|
|
array_copy gns "LISTOF_${l}_vars"
|
|
|
|
if array_contains pons "$n"; then
|
|
|
|
array_copy vs "${p}__${o}_${l}_${n}"
|
|
|
|
elif array_contains pgns "$n"; then
|
|
|
|
array_copy vs "${p}__${l}_${n}"
|
|
|
|
elif array_contains ons "$n"; then
|
|
|
|
array_copy vs "${o}_${l}_${n}"
|
|
|
|
else
|
|
|
|
array_copy vs "${l}_${n}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
array_upvar "$d" "${vs[@]}"
|
|
|
|
}
|
|
|
|
|
|
|
|
function deploy_dump_values() {
|
|
|
|
local -a __dv_vs; array_copy __dv_vs "$2"; local -a vs; array_copy vs __dv_vs
|
|
|
|
local n="$1" indent="$3"
|
|
|
|
case ${#vs[*]} in
|
|
|
|
0) echo "$indent$n=";;
|
|
|
|
1) echo "$indent$n=$(qvalr "$vs")";;
|
|
|
|
*) echo "$indent$n=($(qvals "${vs[@]}"))";;
|
|
|
|
esac
|
|
|
|
}
|