You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

216 lines
3.4 KiB

#!/usr/bin/env bash
set -eu
#set -x
export READ=${READ:-0}
DOC=0
VDN_TRACE=${VDN_TRACE:-0}
EDIT=0
export PAUSE=${PAUSE:-0}
set +u
export FORCE_SEQUENTIAL=${FORCE_SEQUENTIAL:-0}
set -u
export PAUSE_IF_ERROR=0
export VDN_TRACE
synopsis() {
cat << EOF
Usage : `basename $0` [-h] [-r] [-n] [-d] [-t] script1...
EOF
}
help() {
cat << EOF
`basename $0` exécute les scripts du réseau.
`synopsis`
-h : affiche cette aide.
-d : n'exécute pas le script mais affiche sa description.
-e : édite le script.
-n : pas de pause à l'issue du script.
-t : trace l'exécution des commandes effectuées (debug)
-r : attendre la touche "Entrée" pour terminer
-s : force l'exécution séquentielle des scripts."
-w : attendre si erreur
Cette commande, après avoir fixé quelques variables et
quelques fonctions appelle les scripts du réseau.
Remarque : si la variable d'environnement RUN_PARALLEL est fixée à 1 (cf.
~/.vdnrc) alors si plusieurs scripts sont précisés en arguments ils sont
exécutés en parallèle (via tmuxinator).
EOF
}
usage() {
synopsis
exit 1
}
args() {
local opt
while getopts "dehrnpstw" opt; do
case $opt in
h) help; exit 0;;
d) DOC=1;;
e) EDIT=1;;
r) READ=1;;
t) VDN_TRACE=1;;
n) PAUSE=0;;
p) PAUSE=1;;
w) PAUSE_IF_ERROR=1;;
s) FORCE_SEQUENTIAL=1;;
?) usage;;
esac
done
shift $(($OPTIND - 1))
SCRIPTS="$@"
}
realSeq() {
# in sequential
#export IN_PARALLEL=0
set +e
r=0
local SYSTEMS=$(vdn-list | grep -v '^#')
runSequential $SCRIPTS || r=$?
set -e
#if [ $r -ne 0 -a $VDN_SCRIPTS_LEVEL = 1 ]; then
# error "$r"
#
#fi
#pause
return $r
}
# main
VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh
. $VDN_PATH/bin/functions-scripts.sh
args "$@"
export VDN_PATH
export PATH="$VDN_PATH/bin:$PATH"
export READ
. $VDN_PATH/bin/functions-scripts.sh
cd $NETWORK_DIR/scripts
if [ $DOC = 1 ]; then
for i in $SCRIPTS; do
. ./$i
echo "$i $DESC"
done
exit
fi
if [ $EDIT = 1 ]; then
set +u
[ -z "$EDITOR" ] && export EDITOR="vi"
set -u
$EDITOR $SCRIPTS
exit
fi
[ $VDN_DEBUG = 1 ] && set -x
set +u
[ -z "$VDN_SCRIPTS_LEVEL" ] && export VDN_SCRIPTS_LEVEL=0 || :
set -u
VDN_SCRIPTS_LEVEL=$((VDN_SCRIPTS_LEVEL+1))
#if [ $VDN_SCRIPTS_LEVEL = 1 ]; then
# if canRunParallel $SCRIPTS; then
# nothing=0
# fi
#fi
#echo "FORCE_SEQ:$FORCE_SEQUENTIAL"
#echo "RUN_PARALLEL=$RUN_PARALLEL"
#sleep 2
#set -x
#set -x
#export IN_PARALLEL=1
#set -x
#set +u
#echo "SCRIPTS:$SCRIPTS DISABLE_SCAN:$DISABLE_SCAN"
#set -u
if [ $VDN_SCRIPTS_LEVEL = 1 ]; then
#echo "RESET ERRORS"
errors=0
success=0
fi
if canRunParallel $SCRIPTS && [ "$FORCE_SEQUENTIAL" = 0 ]; then
# in parallel
#echo "Run parallel ($SCRIPTS)."
export IN_PARALLEL=1
set +u
set -u
#set -x
#parallelDisablePause
if [ $(echo "$SCRIPTS" | wc -w) -gt 1 ]; then
export IN_PARALLEL=1
runParallel $SCRIPTS
r=$?
else
#export IN_PARALLEL=1
#(
export IN_PARALLEL=0
#p=$PAUSE
#export PAUSE=1
#VDN_SCRIPTS_LEVEL=$((VDN_SCRIPTS_LEVEL+1))
#set -x
#[ $VDN_SCRIPTS_LEVEL != 1 ] && export IN_PARALLEL=0 || :
r=0
realSeq $SCRIPTS || { r=$?; }
#PAUSE=$p
#[ $VDN_SCRIPTS_LEVEL = 1 ] && export IN_PARALLEL=1 || :
#pause
#)
fi
else
export IN_PARALLEL=0
#[ $VDN_SCRIPTS_LEVEL == 1 ] && export IN_PARALLEL=0
#export PAUSE=1
r=0
realSeq $SCRIPTS || { r=$?; }
fi
pause
#echo "vdn-script: return : r:$r"
exit $r