151 lines
5.1 KiB
Bash
151 lines
5.1 KiB
Bash
# ------------------------------------------------------------------------------
|
|
# Base functions
|
|
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
|
|
# ------------------------------------------------------------------------------
|
|
# This file is distributed under 3-clause BSD license.
|
|
# The complete license agreement can be obtained at:
|
|
# https://opensource.org/licenses/BSD-3-Clause
|
|
# ------------------------------------------------------------------------------
|
|
|
|
read_commandline()
|
|
{
|
|
# Processing command line options
|
|
local want_module=false
|
|
local want_logfile=false
|
|
|
|
for opt in $@; do
|
|
if [[ $want_module != true ]] && [[ $want_logfile != true ]]; then
|
|
case $opt in
|
|
"-h"|"--help")
|
|
disp_help
|
|
exit 0
|
|
;;
|
|
"-v"|"--version")
|
|
show_version
|
|
exit 0
|
|
;;
|
|
"-m"|"--module")
|
|
local want_module=true
|
|
;;
|
|
"-c"|"--check-only")
|
|
export CHECK_ONLY=true
|
|
;;
|
|
"-j"|"--jump")
|
|
export JUMP=true
|
|
;;
|
|
"-k"|"--keep-going")
|
|
export KEEPGOING=true
|
|
;;
|
|
"-r"|"--resume")
|
|
if [[ -s $STAGE_FILE ]]; then
|
|
export RESUME=true
|
|
else
|
|
prnt E "Le fichier d'état n'existe pas ou est vide !"
|
|
prnt E "Sans ce fichier, la reprise n'est pas possible."
|
|
die 1 --force
|
|
fi
|
|
;;
|
|
"-R"|"--no-root-check")
|
|
export NO_ROOT_CHECK=true
|
|
;;
|
|
"-l"|"--logfile")
|
|
local want_logfile=true
|
|
;;
|
|
*)
|
|
prnt E "Paramètre \"$opt\" non géré."
|
|
die 1 --force
|
|
;;
|
|
esac
|
|
else
|
|
if [[ $want_module == true ]]; then
|
|
[[ $want_logfile == true ]] && synthax_error
|
|
if [[ ! $MANUAL_MODULE_LIST ]]; then
|
|
export MANUAL_MODULE_LIST=$opt
|
|
want_module=false
|
|
else
|
|
prnt E "Une liste de module à déjà été fournie !"
|
|
prnt E "La ligne de commande ne tolère qu'un paramètre --module."
|
|
die 1 --force
|
|
fi
|
|
elif [[ $want_logfile == true ]]; then
|
|
[[ $want_module == true ]] && synthax_error
|
|
if [[ ! $NEW_LOGFILE ]]; then
|
|
export NEW_LOGFILE=$opt
|
|
want_logfile=false
|
|
else
|
|
prnt E "Il n'est pas possible de spécifier plusieurs fichiers de log."
|
|
die 1 --force
|
|
fi
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# If those var are true at that point, something is wrong
|
|
if [[ $want_logfile == true ]] || [[ $want_module == true ]]; then
|
|
prnt E "Erreur de syntaxe dans la ligne de commande."
|
|
die 1
|
|
fi
|
|
}
|
|
export -f read_commandline
|
|
|
|
load_configuration()
|
|
{
|
|
prnt I "Chargement de la configuration..."
|
|
if [[ -e $MYPATH/conf/$HOSTNAME.conf ]]; then
|
|
prnt I "Une configuration spécifique sera utilisé."
|
|
. $MYPATH/conf/$HOSTNAME.conf
|
|
else
|
|
if [[ -e $MYPATH/conf/init.conf.sh ]]; then
|
|
prnt I "Une configuration générique sera utilisé."
|
|
. $MYPATH/conf/init.conf.sh
|
|
else
|
|
prnt E "Aucune configuration trouvée, impossible de continuer."
|
|
die 6 --force
|
|
fi
|
|
fi
|
|
}
|
|
export -f load_configuration
|
|
|
|
process_commandline_and_vars()
|
|
{
|
|
# Check unconsistant parameters
|
|
if [[ $CHECK_ONLY == true ]]; then
|
|
[[ $JUMP == true ]] && (
|
|
prnt E "Les options --check-only et --jump s'excluent mutuellement !"
|
|
die 1 --force
|
|
)
|
|
[[ $KEEPGOING == true ]] && (
|
|
prnt E "Les options --keep-going et --check-only sont incompatible !"
|
|
die 1 --force
|
|
)
|
|
fi
|
|
if [[ $RESUME == true ]]; then
|
|
[[ $CHECK_ONLY == true ]] && (
|
|
prnt E "La reprise n'a pas de sens avec --check-only."
|
|
die 1 --force
|
|
)
|
|
[[ $MANUAL_MODULE_LIST ]] && (
|
|
prnt E "Le mode reprise ne fonctionne pas avec une liste de modules passé manuellement."
|
|
die 1 --force
|
|
)
|
|
fi
|
|
|
|
# Configure module list
|
|
if [[ $MANUAL_MODULE_LIST ]]; then
|
|
prnt W "Une liste de modules manuelle sera utilisé."
|
|
export MODULE_LIST=$(echo $MANUAL_MODULE_LIST | sed "s/,/ /g")
|
|
fi
|
|
|
|
# Check for module list existance en basic syntax
|
|
if [[ -n $MODULE_LIST ]]; then
|
|
if [[ $(echo $MODULE_LIST | grep '-') ]]; then
|
|
prnt E "Le tiret est interdit dans les noms de module."
|
|
die 5
|
|
fi
|
|
else
|
|
prnt E "Aucun module à exécuter !"
|
|
die 5
|
|
fi
|
|
}
|
|
export -f process_commandline_and_vars
|