suite implémentation patch_cmd()
This commit is contained in:
parent
eee9a65c70
commit
7299aeb98c
76
pff
76
pff
|
@ -327,9 +327,15 @@ function get_profiles() {
|
|||
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() {
|
||||
# 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() {
|
||||
|
@ -394,8 +400,21 @@ function get_cfile() { get_pfile "$1" Current "$2"; }
|
|||
|
||||
function get_vlfiles() {
|
||||
# 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
|
||||
if [ -n "$version" ]; then
|
||||
if [ -n "$rfile" ]; then
|
||||
find "$pffdir/pff/$profile" \
|
||||
-type f -path "$pffdir/pff/$profile/${rfile}__pv-${version}__" -o \
|
||||
-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
|
||||
if [ -n "$rfile" ]; then
|
||||
find "$pffdir/pff/$profile" \
|
||||
-type f -path "$pffdir/pff/$profile/${rfile}__pv-*__" -o \
|
||||
|
@ -407,6 +426,7 @@ function get_vlfiles() {
|
|||
-type l -name "*__pv-*__" \
|
||||
| sed "s|^$pffdir/pff/$profile/||"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function sync_vlfiles() {
|
||||
|
@ -419,7 +439,7 @@ function sync_vlfiles() {
|
|||
if [ -n "$profile" ]; then
|
||||
profiles=("$profile")
|
||||
else
|
||||
array_from_lines profiles "$(get_profiles "$pffdir" | grep -vxF Base)"
|
||||
array_from_lines profiles "$(get_user_profiles "$pffdir")"
|
||||
fi
|
||||
local vlfile rfile prefix pfile plink tmp
|
||||
for vlfile in "$@"; do
|
||||
|
@ -860,18 +880,46 @@ function new_cmd() {
|
|||
function patch_cmd() {
|
||||
local commit="$1" pffdir="$2"
|
||||
local was_patched eop_version patched_profile
|
||||
local pversion profile
|
||||
local -a profiles vlfiles
|
||||
|
||||
ensure_pffdir pffdir "$pffdir"
|
||||
array_from_lines profiles "$(get_user_profiles "$pffdir")"
|
||||
|
||||
while true; do
|
||||
#XXX algo
|
||||
# pour chaque version de PVERSIONS:
|
||||
# pour chaque profil:
|
||||
# s'il y a des fichiers de patches, les intégrer
|
||||
# quand il n'y a plus de fichier de patches dans aucun des profils
|
||||
# intégrer le patch dans le profil Base
|
||||
# mettre à jour PVERSIONS
|
||||
if [ -n "$was_patched" ]; then
|
||||
was_patched=
|
||||
for pversion in "${PVERSIONS[@]}"; do
|
||||
have_profile_vlfiles=
|
||||
have_base_vlfiles=
|
||||
for profile in "${profiles[@]}"; do
|
||||
array_from_lines vlfiles "$(get_vlfiles "$pffdir" "" "$profile" "$pversion")"
|
||||
if [ ${#vlfiles[*]} -gt 0 ]; then
|
||||
have_profile_vlfiles=1
|
||||
break
|
||||
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
|
||||
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"
|
||||
|
@ -894,10 +942,6 @@ function patch_cmd() {
|
|||
git push
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# s'arrêter quand il n'y a plus de modifications
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
@ -1077,7 +1121,7 @@ function edit_cmd() {
|
|||
local -a profiles edits args
|
||||
|
||||
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"
|
||||
enote "Dans le profil $profile:"
|
||||
|
||||
|
|
Loading…
Reference in New Issue