110 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| ##----------------------------------------------------------------------------
 | |
| ## 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
 |