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