diff --git a/lib/ulib/deploy b/lib/ulib/deploy index 275f496..571f89a 100644 --- a/lib/ulib/deploy +++ b/lib/ulib/deploy @@ -7,32 +7,69 @@ function deploy_query() { # Afficher le résultat d'une requête + 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 + 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) - if [ -n "$otype" ]; then deploy_is_type "$otype" || return 2; fi + if [ -n "$otype" ]; then + deploy_is_type "$otype" || { + qvals false "$otype: invalid type" + return 2 + } + fi ;; *) - if [ -n "$qtype" ]; then deploy_is_type "$qtype" || return 3; fi + if [ -n "$qtype" ]; then + deploy_is_type "$qtype" || { + qvals false "$qtype: invalid type" + return 3 + } + fi ;; esac - if [ -n "$ltype" ]; then deploy_is_link "$ltype" || return 4; fi - [ -n "$term" ] || return 5 + 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 + } case "$qtype" in DEST) edebug "=== search type DEST" edebug "term=$term, otype=$otype" - deploy_search_artifact object type "$term" "$otype" host || return 1 + deploy_search_artifact object type "$term" "$otype" host || { + qvals false "artifact not found" + return 1 + } edebug "object=$object, type=$type" - deploy_search_link link "$type" "$ltype" || return 1 + deploy_search_link link "$type" "$ltype" || { + qvals false "link not found" + return 1 + } - deploy_show_values object object "$format" shell - deploy_show_values type otype "$format" shell - deploy_show_values link ltype "$format" shell - deploy_show_links "$object" "$link" "$profile" "$format" + 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 return 0 ;; SOURCE) @@ -40,35 +77,42 @@ function deploy_query() { return 0 ;; *) - if deploy_search_artifact object type "$term" "$qtype"; then deploy_copy_object_values vs "$object" "$type" - deploy_show_values object object "$format" shell - deploy_show_values type otype "$format" shell - deploy_show_values vs "$type" "$format" - deploy_show_attrs "$object" "$type" "$format" + 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 return 0 fi + qvals false "artifact not found" return 1 ;; esac } function deploy_setconf() { - local confname="$1" confdir="$(abspath "${2:-$scriptdir}")" - IFILE="$confdir/init.conf" - if [[ "$confname" == */* ]] || [[ "$confname" == *.* ]]; then - local d="$(abspath "$(dirname -- "$confname")")" - if [ "$d" != "$confdir" ]; then - CONFNAME="$confname" - SFILE="$CONFNAME" - DFILE="${CONFNAME%.conf}.vars" - return + 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)" fi - confname="$(basename -- "$confname" .conf)" + CONFNAME="${confname:-deploy}" + IFILE="$confdir/init.conf" + SFILE="$confdir/$CONFNAME.conf" + else + CONFNAME="${confname:-deploy}" + IFILE= + SFILE= fi - CONFNAME="${confname:-deploy}" - SFILE="$confdir/$CONFNAME.conf" if is_root; then DFILE="/var/local/deploy/$CONFNAME.vars" else @@ -77,6 +121,7 @@ function deploy_setconf() { } function deploy_loadconf() { + # charger la configuration. deploy_setconf() DOIT être appelé avant if [ "$1" != --no-auto-update ]; then ( # mettre à jour le cas échéant le fichier des variables DEPLOY_SRCDIR=; set_defaults deploy @@ -168,19 +213,31 @@ function deploy_search_link() { } function deploy_show_values() { + if [ -n "$5" ]; then + if ! array_isempty "$5"; then + array_contains "$5" "$2" || return + fi + fi 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 - shell) deploy_dump_values "$t" vs;; + shell) + [ -n "$5" ] && echo "$t=()" + deploy_dump_values "$t" vs + ;; line) array_to_lines vs;; *) array_join vs "$f";; esac } function deploy_show_attrs() { + if [ -n "$4" ]; then + local -a __dsa_alv; array_copy __dsa_alv "$4" + local -a alv; array_copy alv __dsa_alv + fi local o="$1" t="$2" f="${3:-shell}" ff=shell [ -n "$ff" -a "$f" != "$ff" ] && return @@ -188,12 +245,22 @@ function deploy_show_attrs() { deploy_prepare_copy_attrs ons gns "$o" "$t" deploy_copy_attr_names ans "$o" "$t" ons gns for an in "${ans[@]}"; do + if [ -n "$4" ]; then + if ! array_isempty "$4"; then + array_contains alv "$an" || continue + fi + [ "$f" == shell ] && echo "$an=()" + fi deploy_copy_attr_values vs "$an" "$o" "$t" ons deploy_dump_values "$an" vs done } function deploy_show_links() { + if [ -n "$6" ]; then + local -a __dsl_alv; array_copy __dsl_alv "$6" + local -a alv; array_copy alv __dsl_alv + fi 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 @@ -201,7 +268,7 @@ function deploy_show_links() { deploy_copy_profiles ps 1 for p in "${ps[@]}"; do [ -n "$profile" -a "$p" != "$profile" ] && continue - deploy_show_values p profile "$format" shell + deploy_show_values p profile "$format" shell alv 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 @@ -215,9 +282,9 @@ function deploy_show_links() { deploy_copy_object_values os "$av" host array_extendu ovs os done - deploy_show_values ovs host "$f" "$ff" + deploy_show_values ovs host "$f" "$ff" alv else - deploy_show_values avs "$an" "$f" shell + deploy_show_values avs "$an" "$f" shell alv fi done done