L'ensemble des scripts et bibliothèques bash utilisés pour maintenir l'infrastructure du Tetalab. Ce socle Bash est une version légère et adaptée du socle Bash essentiellement développé par Emmanuel Confrère, éminent DBA Calédonien.
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.
 

109 lines
3.7 KiB

##----------------------------------------------------------------------------
## Script : path.lib
## Module Puppet : gnc-script_core_dtsi
## Auteur : Emmanuel Confrere
## Date : 10-02-2016
## Version : 2.0.0
## Objet : Ajout d'un repertoire a une variable avec control d unicite.
##
## Fonction : fctpath
##
## detail : Certaines variables represente une liste de repertoire
## separes par un caractere significatif. C'est le cas pour
## les variables PATH, MANPATH, etc...
## Cette fonction permet la mise a jour de ce type de
## variable sans se poser la question de la redondance
## de l'information ou de l'existance du repertoire.
## L'appel de cette fonction doit etre suivi de quatre
## parametres :
## - 1 : le nom du repertoire a ajouter
## - 2 : le nom de la variable a mettre a jour
## - 3 : le separateur de champs utilise
## - 4 : le parametre "avant" si vous desirez ajouter
## le repertoire en debut de variable
## La variable est automatiquement exportee.
# ----------------------------------------------------------------------------
# Mise a jour :
# 1.0.0 19-08-2001 - Marc GRESSET - Creation
# 1.0.0 10-02-2016 - Emmanuel Confrere - Integration au script du socle DTSI
##---------------------------------------------------------------------------
fctpath () {
local V_PATH_NAME="${1}"
local V_PATH_VAR="${2}"
local V_PATH_SEPAR="${3}"
local V_PATH_WHERE="${4}"
eval V_PATH_CONTENU=\"\$\{"${V_PATH_VAR}"\}\"
#- Suppression des caracteres V_PATH_SEPAR au debut et en fin de ligne
V_PATH_CONTENU=`echo "${V_PATH_CONTENU}"|sed "s#^${V_PATH_SEPAR}##;s#${V_PATH_SEPAR}\\$##"`
if [ -z "${V_PATH_NAME}" ] || [ -z "${V_PATH_VAR}" ] || [ -z "${V_PATH_SEPAR}" ]
then
echo "fct_path : Probleme sur les parametres :"
echo "fct_path : \${V_PATH_NAME} = [ ${V_PATH_NAME} ]"
echo "fct_path : \${V_PATH_VAR} = [ ${V_PATH_VAR} ]"
echo "fct_path : \${V_PATH_SEPAR} = [ ${V_PATH_SEPAR} ]"
return 1
else
case ${V_PATH_SEPAR} in
\.|\,|\;|\:|\!|\~|\@|\#|\%|\^) \
:
;;
*) echo "fct_path : Probleme sur le separateur de champs."
echo "fct_path : \${V_PATH_NAME} = [ ${V_PATH_NAME} ]"
echo "fct_path : \${V_PATH_VAR} = [ ${V_PATH_VAR} ]"
echo "fct_path : \${V_PATH_SEPAR} = [ ${V_PATH_SEPAR} ]"
return 2
;;
esac
fi
# - Suppression du path si existe deja dans la variable
case ${V_PATH_CONTENU} in
*${V_PATH_SEPAR}${V_PATH_NAME}${V_PATH_SEPAR}* ) \
V_PATH_CONTENU=`echo ${V_PATH_CONTENU}|sed "s#${V_PATH_SEPAR}${V_PATH_NAME}${V_PATH_SEPAR}#${V_PATH_SEPAR}#"` ;;
${V_PATH_NAME}${V_PATH_SEPAR}* ) \
V_PATH_CONTENU=`echo ${V_PATH_CONTENU}|sed "s#${V_PATH_NAME}${V_PATH_SEPAR}##"` ;;
*${V_PATH_SEPAR}${V_PATH_NAME} ) \
V_PATH_CONTENU=`echo ${V_PATH_CONTENU}|sed "s#${V_PATH_SEPAR}${V_PATH_NAME}##"` ;;
${V_PATH_NAME} ) V_PATH_CONTENU="" ;;
esac
# - Initialisation de la nouvelle variable
if [ "${V_PATH_WHERE}" != "supp" ]
then
if [ -z "${V_PATH_CONTENU}" ]
then
V_PATH_CONTENU="${V_PATH_NAME}"
elif [ "${V_PATH_WHERE}" = "avant" ]
then
V_PATH_CONTENU=${V_PATH_NAME}${V_PATH_SEPAR}${V_PATH_CONTENU}
else
V_PATH_CONTENU=${V_PATH_CONTENU}${V_PATH_SEPAR}${V_PATH_NAME}
fi
fi
if [ ! -d "${V_PATH_NAME}" ] && [ ! -f "${V_PATH_NAME}" ]
then
#- Le repertoire specifier n existe pas
unset V_PATH_NAME
unset V_PATH_VAR
unset V_PATH_SEPAR
unset V_PATH_WHERE
unset V_PATH_CONTENU
return 2
else
#- Export du nouveau Path
eval ${V_PATH_VAR}=${V_PATH_CONTENU}
eval export ${V_PATH_VAR}
unset V_PATH_NAME
unset V_PATH_VAR
unset V_PATH_SEPAR
unset V_PATH_WHERE
unset V_PATH_CONTENU
fi
}
typeset -Ffx fctpath