ajout install.sh
This commit is contained in:
		
							parent
							
								
									529633e3ba
								
							
						
					
					
						commit
						3c8ef57246
					
				| @ -6,7 +6,8 @@ function __esection() { | ||||
|     local length="${COLUMNS:-80}" | ||||
|     setx lsep=__complete "$prefix" "$length" - | ||||
| 
 | ||||
|     recho "$COULEUR_BLEUE$lsep$COULEUR_NORMALE" | ||||
|     recho " | ||||
| $COULEUR_BLEUE$lsep$COULEUR_NORMALE" | ||||
|     [ -n "$*" ] || return 0 | ||||
|     length=$((length - 1)) | ||||
|     setx -a lines=echo "$1" | ||||
|  | ||||
| @ -6,7 +6,8 @@ function __esection() { | ||||
|     local length="${COLUMNS:-80}" | ||||
|     setx lsep=__complete "$prefix" "$length" - | ||||
| 
 | ||||
|     recho "$lsep" | ||||
|     recho " | ||||
| $lsep" | ||||
|     [ -n "$*" ] || return 0 | ||||
|     length=$((length - 1)) | ||||
|     setx -a lines=echo "$1" | ||||
|  | ||||
							
								
								
									
										147
									
								
								bash/src/install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								bash/src/install.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,147 @@ | ||||
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 | ||||
| ##@cooked nocomments | ||||
| module: install "Outils de haut niveau pour installer des fichiers de configuration" | ||||
| require: base | ||||
| 
 | ||||
| if [ -z "$NULIB_INSTALL_CONFIGURED" ]; then | ||||
|     # Faut-il afficher le nom des fichiers copié/créés? | ||||
|     export NULIB_INSTALL_VERBOSE=1 | ||||
|     # Faut-il afficher les destinations avec ppath? | ||||
|     export NULIB_INSTALL_USES_PPATH= | ||||
| fi | ||||
| export NULIB_INSTALL_CONFIGURED=1 | ||||
| 
 | ||||
| function ensure_exists() { | ||||
|     # Créer le fichier vide "$1" s'il n'existe pas déjà, avec les permissions | ||||
|     # $2(=644). retourner vrai si le fichier a été créé sans erreur | ||||
|     [ -f "$1" ] || { | ||||
|         if [ -n "$NULIB_INSTALL_VERBOSE" ]; then | ||||
|             if [ -n "$NULIB_INSTALL_USES_PPATH" ]; then | ||||
|                 estep "$(ppath "$1")" | ||||
|             else | ||||
|                 estep "$1" | ||||
|             fi | ||||
|         fi | ||||
|         mkdirof "$1" | ||||
|         local r=0 | ||||
|         touch "$1" && chmod "${2:-644}" "$1" || r=$? | ||||
|         return $r | ||||
|     } | ||||
|     return 1 | ||||
| } | ||||
| 
 | ||||
| function __nulib_install_show_args() { | ||||
|     if [ -z "$NULIB_INSTALL_VERBOSE" ]; then | ||||
|         : | ||||
|     elif [ -n "$NULIB_INSTALL_USES_PPATH" ]; then | ||||
|         estep "$1 --> $(ppath "$2")${3:+/}" | ||||
|     else | ||||
|         estep "$1 --> $2${3:+/}" | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| function copy_replace() { | ||||
|     # Copier de façon inconditionnelle le fichier $1 vers le fichier $2, en | ||||
|     # réinitialisation les permissions à la valeur $3 | ||||
|     local src="$1" dest="$2" | ||||
|     local srcname="$(basename -- "$src")" | ||||
| 
 | ||||
|     [ -d "$dest" ] && dest="$dest/$srcname" | ||||
|     mkdirof "$dest" || return 1 | ||||
| 
 | ||||
|     if [ -n "$NULIB_INSTALL_VERBOSE" ]; then | ||||
|         local destarg destname slash | ||||
|         destarg="$(dirname -- "$dest")" | ||||
|         destname="$(basename -- "$dest")" | ||||
|         if [ "$srcname" == "$destname" ]; then | ||||
|             slash=1 | ||||
|         else | ||||
|             destarg="$destarg/$destname" | ||||
|         fi | ||||
|         __nulib_install_show_args "$srcname" "$destarg" "$slash" | ||||
|     fi | ||||
|     local r=0 | ||||
|     if cp "$src" "$dest"; then | ||||
|         if [ -n "$3" ]; then | ||||
|             chmod "$3" "$dest" || r=$? | ||||
|         fi | ||||
|     fi | ||||
|     return $r | ||||
| } | ||||
| 
 | ||||
| function copy_new() { | ||||
|     # Copier le fichier "$1" vers le fichier "$2", avec les permissions $3(=644) | ||||
|     # Ne pas écraser le fichier destination s'il existe déjà | ||||
|     # Retourner vrai si le fichier a été copié sans erreur | ||||
|     local src="$1" dest="$2" | ||||
| 
 | ||||
|     [ -d "$dest" ] && dest="$dest/$(basename -- "$src")" | ||||
|     mkdirof "$dest" || return 1 | ||||
| 
 | ||||
|     if [ ! -e "$dest" ]; then | ||||
|         copy_replace "$src" "$dest" "$3" | ||||
|     else | ||||
|         return 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| function copy_update() { | ||||
|     # Copier le fichier "$1" vers le fichier "$2", si $2 n'existe pas, ou si $1 | ||||
|     # a été modifié par rapport à $2. Réinitialiser le cas échéant les | ||||
|     # permissions à la valeur $3 | ||||
|     # Retourner vrai si le fichier a été copié sans erreur. | ||||
|     local src="$1" dest="$2" | ||||
| 
 | ||||
|     [ -d "$dest" ] && dest="$dest/$(basename -- "$src")" | ||||
|     mkdirof "$dest" || return 1 | ||||
| 
 | ||||
|     if [ ! -e "$dest" ]; then | ||||
|         copy_replace "$src" "$dest" "$3" | ||||
|     elif testdiff "$src" "$dest"; then | ||||
|         copy_replace "$src" "$dest" "$3" | ||||
|     else | ||||
|         return 1 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| COPY_UPDATE_ASK_DEFAULT= | ||||
| function copy_update_ask() { | ||||
|     # Copier ou mettre à jour le fichier $1 vers le fichier $2. | ||||
|     # Si le fichier existe déjà, la différence est affichée, et une confirmation | ||||
|     # est demandée pour l'écrasement du fichier. | ||||
|     # si $1 commence par '-' alors on s'en sert comme option pour configurer le | ||||
|     # niveau d'interaction pour demander la confirmation. les paramètres sont | ||||
|     # alors décalés | ||||
|     # Retourner vrai si le fichier a été copié sans erreur. | ||||
|     local interopt=-c | ||||
|     if [[ "$1" == -* ]]; then | ||||
|         interopt="$1" | ||||
|         shift | ||||
|     fi | ||||
|     local src="$1" dest="$2" | ||||
| 
 | ||||
|     [ -d "$dest" ] && dest="$dest/$(basename -- "$src")" | ||||
|     mkdirof "$dest" || return 1 | ||||
| 
 | ||||
|     [ -f "$dest" ] || copy_replace "$src" "$dest" | ||||
|     if testdiff "$src" "$dest"; then | ||||
|         check_interaction "$interopt" && diff -u "$dest" "$src" | ||||
|         if ask_yesno "$interopt" "Voulez-vous remplacer $(ppath "$dest") par la nouvelle version?" "${COPY_UPDATE_ASK_DEFAULT:-C}"; then | ||||
|             copy_replace "$src" "$dest" "$3" | ||||
|             return $? | ||||
|         elif ! check_interaction "$interopt"; then | ||||
|             ewarn "Les mises à jours suivantes sont disponibles:" | ||||
|             diff -u "$dest" "$src" | ||||
|             ewarn "Le fichier $(ppath "$dest") n'a pas été mis à jour" | ||||
|         fi | ||||
|     fi | ||||
|     return 1 | ||||
| } | ||||
| 
 | ||||
| function link_new() { | ||||
|     # Si $2 n'existe pas, créer le lien symbolique $2 pointant vers $1 | ||||
|     [ -e "$2" ] && return 0 | ||||
| 
 | ||||
|     __nulib_install_show_args "$(basename -- "$2")" "$(dirname -- "$1")" | ||||
|     ln -s "$1" "$2" | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user