pff: ajout AUTO_CMDS et NEW_CMDS, supprimer MKDIRS

This commit is contained in:
Jephté Clain 2021-05-27 11:40:39 +04:00
parent fe839f4c7b
commit 111463a861
1 changed files with 20 additions and 5 deletions

25
pff
View File

@ -26,10 +26,12 @@ PFFCONFVARS=(
"DISTTYPE=auto//Type de distribution upstream: full ou patch"
-a
"ORIGEXTS=//Extensions origines"
"AUTO_CMDS//Commandes à lancer lors des vérifications automatiques"
"NEW_CMDS//Commandes à lancer avant l'action new"
"PROTECTS=//Fichiers locaux à protéger lors de l'intégration au format rsync e.g /dir/, /file, etc."
"MKDIRS//Répertoires qui doivent toujours exister"
"FILTERS//Filtres appliqués aux fichiers lors de l'intégration, de la forme 'filespec:filter'. Cf la doc pour le détail du format"
"NOMERGES=//Fichiers qu'il ne faut pas chercher à fusionner. Cf la doc pour le détail du format"
-s
"NOUPSTREAM=//Indiquer qu'il n'y a pas de fichiers upstream. pff est uniquement utilisé pour gérer des profils de fichiers"
)
@ -605,7 +607,7 @@ function select_profile() {
function autoinit() {
# vérifications automatiques: créer les répertoires de base nécessaire au
# fonctionnement de pff dans le projet pff $1
local pffdir="$1" profile mkdir
local pffdir="$1" profile
[ -d "$pffdir/pff/Current" ] || mkdir -p "$pffdir/pff/Current"
[ -d "$pffdir/pff/Base" ] || mkdir -p "$pffdir/pff/Base"
# tous les fichiers du profil Base doivent être en lecture seule, sauf si
@ -613,10 +615,14 @@ function autoinit() {
if [ -z "$NOUPSTREAM" ]; then
find "$pffdir/pff/Base" -type f -perm /222 -exec chmod a-w '{}' +
fi
# Créer les répertoires de MKDIRS
for mkdir in "${MKDIRS[@]}"; do
mkdir -p "$pffdir/$mkdir"
# Lancer les commandes AUTO_CMDS
local cwd cmd
cwd="$(pwd)"
cd "$pffdir"
for cmd in "${AUTO_CMDS[@]}"; do
eval "$cmd"
done
cd "$cwd"
return 0
}
@ -859,6 +865,15 @@ function new_cmd() {
new__prepare_archive srcdir version "$archive" "$version" "$unwrap"
[ "$DISTTYPE" == full ] && full=1
## Lancer les commandes
local cwd cmd
cwd="$(pwd)"
cd "$pffdir"
for cmd in "${NEW_CMDS[@]}"; do
eval "$cmd"
done
cd "$cwd"
## lister les fichiers dans la source et la destination
local workdir
ac_set_tmpdir workdir