ajout de workdir_excludes et workdir_includes, particulièrement utile avec copy_files=false

This commit is contained in:
Jephté Clain 2015-01-09 10:33:42 +04:00
parent 3fc57711b5
commit 07383052ca
2 changed files with 33 additions and 4 deletions

View File

@ -43,6 +43,8 @@ function uinst() {
local profiledir
local bashrcdir
local defaultdir
local workdir_excludes
local workdir_includes
local copy_files
local destdir
local srcdir
@ -180,6 +182,8 @@ function __uinst_init() {
profiledir='lib/profile.d'
bashrcdir='lib/bashrc.d'
defaultdir='lib/default'
workdir_excludes='()'
workdir_includes='()'
copy_files='true'
destdir='/usr/local'
srcdir='.'
@ -361,7 +365,7 @@ Utilisez 'udir -e $(ppath "$srcdir")' pour modifier les paramètres."
function __uinst_defaultvars() {
eval "$(array_join UINST_DEFAULTS ';')"
UDIR_VARS=(uinc install_profiles profiledir bashrcdir defaultdir copy_files destdir srcdir owner)
UDIR_ARRAYS=(uinc_options uinc_args preconfig_scripts configure_variables configure_dest_for config_scripts files modes root_scripts)
UDIR_ARRAYS=(uinc_options uinc_args preconfig_scripts configure_variables configure_dest_for config_scripts workdir_excludes workdir_includes files modes root_scripts)
}
function __uinst_protectvars() {
@ -594,11 +598,28 @@ function __uinst_prepare_workdir() {
# Faire une copie de travail de $srcdir dans $1
# srcdir est modifié pour devenir la nouvelle valeur
local srcname="$(basename "$srcdir")"
local destdir="$1/$srcname"
estep "Création d'une copie de travail dans $1..."
"${UINST_COPY_METHOD:-cpnovcs}" "$srcdir" "$1/$srcname"
if [ ${#workdir_excludes[*]} -gt 0 -o ${#workdir_includes[*]} ]; then
# on a spécifié des inclusions ou exclusions pour le répertoire de
# travail
(
for exclude in "${workdir_excludes[@]}"; do
array_add __CPNOVCS_RSYNC_ARGS --exclude "$exclude"
done
for include in "${workdir_includes[@]}"; do
array_add __CPNOVCS_RSYNC_ARGS --include "$include"
done
cd "$srcdir"
"${UINST_COPY_METHOD:-cpdirnovcs}" . "$destdir"
)
else
# copie simple du répertoire de travail
"${UINST_COPY_METHOD:-cpdirnovcs}" "$srcdir" "$destdir"
fi
srcdir="$1/$srcname"
srcdir="$destdir"
chmod -R +w "$srcdir" || return 1
return 0
}

8
udir
View File

@ -87,6 +87,14 @@ install_profiles
profiledir Répertoire source pour les fichiers à copier dans ~/etc/profile.d
bashrcdir Répertoire source pour les fichiers à copier dans ~/etc/bashrc.d
defaultdir Répertoire source pour les fichiers à copier dans ~/etc/default.d
workdir_excludes
workdir_includes
Fichiers à exclure (resp. inclure) pour construire le répertoire de
travail avec uinst. C'est à partir du répertoire de travail que sont
déployés les fichiers.
La copie se faisant avec rsync, workdir_excludes spécifie les
fichiers à exclure. workdir_includes permet de forcer l'inclusion de
fichiers qui seraient exclus autrement.
copy_files Faut-il copier les fichiers sources dans le répertoire de
destination? Les fichiers sources et le répertoire de
destination sont calculés à partir des valeurs des variables