diff --git a/doc/dev.md b/doc/dev.md index 330eb63..f8207bd 100644 --- a/doc/dev.md +++ b/doc/dev.md @@ -1,7 +1,7 @@ # init.sh developper's reference ## Getting started -This is a programmer reference. It's not intended to be a manual, be a reference +This is a programmer reference. It's not intended to be a manual, but a reference for all internal functions, so you can easily build your own modules. This suppose you already read the [Readme file](../README.md). Creating modules will also requires some good knowledge of Bash programming. @@ -9,4 +9,70 @@ will also requires some good knowledge of Bash programming. ## The aaa_error.sh file ### Functions #### check_root +Check if user is root. If user is not root, script execution is interupted and +exit with error. + +This function have no parameter. + +If the variable NO_ROOT_CHECK is set to true the function always exit without +error and no check is done. + +#### die +Trigger an error, print a backtrace and exit the script, unless KEEPGOING +variable is set to true. In that situation we just display a warning. + +If the parameter --force is given, we exit even if the KEEPGOING variable is set +to true. + +#### noerror +Allow te execution of a command bypassing the error management system. The purpose +is to allow execution of test returning normally a non zero value without +triggering an error and the following exit. + +If the first parameter is --noout all the outputs are disabled. The other +parameters are the raw command line to execute. + +The function echoes the error code returned by the executed command. + +### Other functionnalities +The simple integration of aaa_error.sh file into a script, will change the script +behaviour. The following Bash signals will be trapped: + - **ERR**: The ERR signal is triggered every time Bash encounter an error or if +a command return a non zero value. The function called on that signal will stop +execution of the script displaying an error message with error code and a backtrace +to help identify the error origin. + - **SIGINT**: That signal is trigerred when Ctrl + C is pressed by the user. That +signal will be interpreted only if the command is a Bash internal. If an executable +receive the signal it will be interpreted with the own executable mechanisms. We +will exit after cleanup. + - **SIGTERM**: That signal is typically the result of an external kill of the bash +process running the script. We will exit after cleanup. + +## The display.sh file +### Functions +#### prnt +Print a message with timestamp and header. The header depends on first parameter +will be collored and have a fixed lenght so text is always alligned. + +The first parameter is the header type, having those possible values: + - **I**: Display an informative message in green + - **W**: Display a warning in yellow + - **E**: Display an error in red + - **m**: Display a message without header but alligned + - Anything else will be treated as the message and will loose alignment. + +Second parameter is the message to display. + +### Other functionnalities +Using that script will declare many easy to remember variables containing Bash +color codes : + + - Standard codes depending on your environment: DEFAULTFG, DEFAULTBG, DEFAULTCOL=${DEFAULTBG}${DEFAULTFG} + - Regular Colors: Black, Red, Green, Yellow, Blue, Purple, Cyan, White + - Bold: BBlack, BRed, BGreen, BYellow, BBlue, BPurple, BCyan, BWhite + - Underline: UBlack, URed, UGreen, UYellow, UBlue, UPurple, UCyan, UWhite + - Background: On_Black, On_Red, On_Green, On_Yellow, On_Blue, On_Purple, On_Cyan, On_White + - High Intensity: IBlack, IRed, IGreen, IYellow, IBlue, IPurple, ICyan, IWhite + - Bold High Intensity: BIBlack, BIRed, BIGreen, BIYellow, BIBlue, BIPurple, BICyan, BIWhite + - High Intensity backgrounds: On_IBlack, On_IRed, On_IGreen, On_IYellow, On_IBlue, On_IPurple, On_ICyan, On_IWhite diff --git a/init.sh b/init.sh index 6e30135..d2c52e9 100755 --- a/init.sh +++ b/init.sh @@ -108,7 +108,7 @@ load_configuration process_commandline_and_vars # Declare proxy system vars if needed and if not already declared -if [[ -n $PROXYSRV && -n $PROXYSRVPORT ]]; then +if [[ -n $PROXYSRV && -n $PROXYSRVPORT && -z $NO_PROXY ]]; then export http_proxy=${http_proxy:-"http://$PROXYSRV:$PROXYSRVPORT/"} export https_proxy=${https_proxy:-"http://$PROXYSRV:$PROXYSRVPORT/"} fi diff --git a/lib/display.sh b/lib/display.sh index e3f5007..96f74f3 100644 --- a/lib/display.sh +++ b/lib/display.sh @@ -93,8 +93,8 @@ export On_IWhite='\e[0;107m' prnt() { case $1 in "I") - HEADS="[ ${IGreen}info${DEFAULTFG} ]" - shift + HEADS="[ ${IGreen}info${DEFAULTFG} ]" + shift ## ;; "W") HEADS="[${IYellow}Attention${DEFAULTFG}]" diff --git a/lib/support.sh b/lib/support.sh index e3969ec..8123597 100644 --- a/lib/support.sh +++ b/lib/support.sh @@ -33,6 +33,8 @@ Options : -k, --keep-going Continue l'execution en cas d'erreur. -r, --resume Reprend l'execution là ou elle s'est arrêté. -R, --no-root-check Ne pas vérifier les droits root (ou UID 0) + -P, --no-proxy Ne pas utiliser de proxy lors de l'utilisation de + ce script (n'empêche pas leur configuration via modules) -h, --help Affiche ce texte d'aide. -l, --logfile Nom du fichier de log. Peut aussi être changé via la variable d'environnement LOGFILE. diff --git a/lib/zzz_main_fct.sh b/lib/zzz_main_fct.sh index 4c613dc..fb9cc3c 100644 --- a/lib/zzz_main_fct.sh +++ b/lib/zzz_main_fct.sh @@ -59,6 +59,9 @@ read_commandline() "-R"|"--no-root-check") export NO_ROOT_CHECK=true ;; + "-P"|"--no-proxy") + export NO_PROXY=true + ;; "-l"|"--logfile") local want_logfile=true ;;