suite implémentation patch_cmd()
This commit is contained in:
parent
eee9a65c70
commit
7299aeb98c
130
pff
130
pff
|
@ -327,9 +327,15 @@ function get_profiles() {
|
||||||
list_dirs "$pffdir/pff") | sort -u | grep -vxF Current
|
list_dirs "$pffdir/pff") | sort -u | grep -vxF Current
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_user_profiles() {
|
||||||
|
# afficher tous les profils modifiables du projet pff $1 (c'est à dire tous
|
||||||
|
# les profils valides excepté Base)
|
||||||
|
get_profiles "$@" | grep -vxF Base
|
||||||
|
}
|
||||||
|
|
||||||
function get_first_profile() {
|
function get_first_profile() {
|
||||||
# afficher le premier profil autre que Base du projet pff $1
|
# afficher le premier profil autre que Base du projet pff $1
|
||||||
get_profiles "$@" | grep -vxF Base | head -n1
|
get_user_profiles "$@" | head -n1
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_local_files() {
|
function get_local_files() {
|
||||||
|
@ -394,18 +400,32 @@ function get_cfile() { get_pfile "$1" Current "$2"; }
|
||||||
|
|
||||||
function get_vlfiles() {
|
function get_vlfiles() {
|
||||||
# afficher tous les fichiers de version
|
# afficher tous les fichiers de version
|
||||||
local pffdir="$1" rfile="$2" profile="${3:-Base}"
|
local pffdir="$1" rfile="$2" profile="${3:-Base}" version="$4"
|
||||||
[ -d "$pffdir/pff/$profile" ] || return
|
[ -d "$pffdir/pff/$profile" ] || return
|
||||||
if [ -n "$rfile" ]; then
|
if [ -n "$version" ]; then
|
||||||
find "$pffdir/pff/$profile" \
|
if [ -n "$rfile" ]; then
|
||||||
-type f -path "$pffdir/pff/$profile/${rfile}__pv-*__" -o \
|
find "$pffdir/pff/$profile" \
|
||||||
-type l -path "$pffdir/pff/$profile/${rfile}__pv-*__" \
|
-type f -path "$pffdir/pff/$profile/${rfile}__pv-${version}__" -o \
|
||||||
| sed "s|^$pffdir/pff/$profile/||"
|
-type l -path "$pffdir/pff/$profile/${rfile}__pv-${version}__" \
|
||||||
|
| sed "s|^$pffdir/pff/$profile/||"
|
||||||
|
else
|
||||||
|
find "$pffdir/pff/$profile" \
|
||||||
|
-type f -name "*__pv-${version}__" -o \
|
||||||
|
-type l -name "*__pv-${version}__" \
|
||||||
|
| sed "s|^$pffdir/pff/$profile/||"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
find "$pffdir/pff/$profile" \
|
if [ -n "$rfile" ]; then
|
||||||
-type f -name "*__pv-*__" -o \
|
find "$pffdir/pff/$profile" \
|
||||||
-type l -name "*__pv-*__" \
|
-type f -path "$pffdir/pff/$profile/${rfile}__pv-*__" -o \
|
||||||
| sed "s|^$pffdir/pff/$profile/||"
|
-type l -path "$pffdir/pff/$profile/${rfile}__pv-*__" \
|
||||||
|
| sed "s|^$pffdir/pff/$profile/||"
|
||||||
|
else
|
||||||
|
find "$pffdir/pff/$profile" \
|
||||||
|
-type f -name "*__pv-*__" -o \
|
||||||
|
-type l -name "*__pv-*__" \
|
||||||
|
| sed "s|^$pffdir/pff/$profile/||"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,7 +439,7 @@ function sync_vlfiles() {
|
||||||
if [ -n "$profile" ]; then
|
if [ -n "$profile" ]; then
|
||||||
profiles=("$profile")
|
profiles=("$profile")
|
||||||
else
|
else
|
||||||
array_from_lines profiles "$(get_profiles "$pffdir" | grep -vxF Base)"
|
array_from_lines profiles "$(get_user_profiles "$pffdir")"
|
||||||
fi
|
fi
|
||||||
local vlfile rfile prefix pfile plink tmp
|
local vlfile rfile prefix pfile plink tmp
|
||||||
for vlfile in "$@"; do
|
for vlfile in "$@"; do
|
||||||
|
@ -860,43 +880,67 @@ function new_cmd() {
|
||||||
function patch_cmd() {
|
function patch_cmd() {
|
||||||
local commit="$1" pffdir="$2"
|
local commit="$1" pffdir="$2"
|
||||||
local was_patched eop_version patched_profile
|
local was_patched eop_version patched_profile
|
||||||
|
local pversion profile
|
||||||
|
local -a profiles vlfiles
|
||||||
|
|
||||||
ensure_pffdir pffdir "$pffdir"
|
ensure_pffdir pffdir "$pffdir"
|
||||||
|
array_from_lines profiles "$(get_user_profiles "$pffdir")"
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
#XXX algo
|
was_patched=
|
||||||
# pour chaque version de PVERSIONS:
|
for pversion in "${PVERSIONS[@]}"; do
|
||||||
# pour chaque profil:
|
have_profile_vlfiles=
|
||||||
# s'il y a des fichiers de patches, les intégrer
|
have_base_vlfiles=
|
||||||
# quand il n'y a plus de fichier de patches dans aucun des profils
|
for profile in "${profiles[@]}"; do
|
||||||
# intégrer le patch dans le profil Base
|
array_from_lines vlfiles "$(get_vlfiles "$pffdir" "" "$profile" "$pversion")"
|
||||||
# mettre à jour PVERSIONS
|
if [ ${#vlfiles[*]} -gt 0 ]; then
|
||||||
if [ -n "$was_patched" ]; then
|
have_profile_vlfiles=1
|
||||||
local ask default
|
break
|
||||||
if [ -n "$eop_version" ]; then
|
|
||||||
msg="Intégration de la version $version"
|
|
||||||
else
|
|
||||||
msg="Correction du profil $patched_profile pour la version $version"
|
|
||||||
fi
|
|
||||||
if [ "$commit" == ask ]; then
|
|
||||||
if [ -n "$eop_version" ]; then
|
|
||||||
enote "Vous avez terminé l'intégration des patches de la version $version"
|
|
||||||
default=O
|
|
||||||
else
|
|
||||||
einfo "Vous avez intégré les patches de la version $version pour le profil $patched_profile"
|
|
||||||
default=N
|
|
||||||
fi
|
|
||||||
ask_yesno "Voulez-vous enregistrer les modifications dans git?" $default || commit=
|
|
||||||
fi
|
|
||||||
if [ -n "$commit" ]; then
|
|
||||||
git add -A && git commit -m "$msg" || return
|
|
||||||
if [ -z "$UTOOLS_VCS_OFFLINE" ]; then
|
|
||||||
git push
|
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
[ -n "$have_profile_vlfiles" ] && break
|
||||||
|
array_from_lines vlfiles "$(get_vlfiles "$pffdir" "" Base "$pversion")"
|
||||||
|
if [ ${#vlfiles[*]} -gt 0 ]; then
|
||||||
|
have_base_vlfiles=1
|
||||||
|
break
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
if [ -n "$have_profile_vlfiles" ]; then
|
||||||
|
# il faut patcher les fichiers du profil
|
||||||
|
echo "Il faut patcher avec les modifications de ces fichiers: ${vlfiles[*]}" #XXX intégrer les modifications dans les fichiers de patch pour le profil
|
||||||
|
#was_patched=1
|
||||||
|
elif [ -n "$have_base_vlfiles" ]; then
|
||||||
|
# il faut intégrer la nouvelle version dans Base
|
||||||
|
echo "Ces fichiers deviennent les nouveaux fichiers référence: ${vlfiles[*]}" #XXX le fichier de patch devient le nouveau fichier référence dans Base
|
||||||
|
#was_patched=1; eop_version=1
|
||||||
|
#array_del PVERSIONS "$pversion"
|
||||||
|
#conf_update "$pffdir/$PFFCONF" PVERSIONS
|
||||||
|
fi
|
||||||
|
|
||||||
|
# s'arrêter quand il n'y a plus de modifications
|
||||||
|
[ -n "$was_patched" ] || break
|
||||||
|
|
||||||
|
local ask default
|
||||||
|
if [ -n "$eop_version" ]; then
|
||||||
|
msg="Intégration de la version $version"
|
||||||
else
|
else
|
||||||
# s'arrêter quand il n'y a plus de modifications
|
msg="Correction du profil $patched_profile pour la version $version"
|
||||||
break
|
fi
|
||||||
|
if [ "$commit" == ask ]; then
|
||||||
|
if [ -n "$eop_version" ]; then
|
||||||
|
enote "Vous avez terminé l'intégration des patches de la version $version"
|
||||||
|
default=O
|
||||||
|
else
|
||||||
|
einfo "Vous avez intégré les patches de la version $version pour le profil $patched_profile"
|
||||||
|
default=N
|
||||||
|
fi
|
||||||
|
ask_yesno "Voulez-vous enregistrer les modifications dans git?" $default || commit=
|
||||||
|
fi
|
||||||
|
if [ -n "$commit" ]; then
|
||||||
|
git add -A && git commit -m "$msg" || return
|
||||||
|
if [ -z "$UTOOLS_VCS_OFFLINE" ]; then
|
||||||
|
git push
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -1077,7 +1121,7 @@ function edit_cmd() {
|
||||||
local -a profiles edits args
|
local -a profiles edits args
|
||||||
|
|
||||||
ensure_pffdir pffdir
|
ensure_pffdir pffdir
|
||||||
array_from_lines profiles "$(get_profiles "$pffdir" | grep -vxF Base)"
|
array_from_lines profiles "$(get_user_profiles "$pffdir")"
|
||||||
[ -n "$profile" ] || setx profile=get_current_profile "$pffdir"
|
[ -n "$profile" ] || setx profile=get_current_profile "$pffdir"
|
||||||
enote "Dans le profil $profile:"
|
enote "Dans le profil $profile:"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue