pff: ajout de --diff et --infos -l
This commit is contained in:
parent
ed0659f2a1
commit
70165cb09f
118
pff
118
pff
|
@ -6,6 +6,7 @@ SCRIPT_ALIASES=(
|
||||||
pfa:-a
|
pfa:-a
|
||||||
pfb:-b
|
pfb:-b
|
||||||
pfe:-e
|
pfe:-e
|
||||||
|
pfd:-d
|
||||||
)
|
)
|
||||||
|
|
||||||
ORIGEXT=pff
|
ORIGEXT=pff
|
||||||
|
@ -175,10 +176,10 @@ supportées sont:
|
||||||
Ajouter/Identifier un fichier comme un fichier local pour tous les
|
Ajouter/Identifier un fichier comme un fichier local pour tous les
|
||||||
profils. Le fichier est copié dans le profil Base.
|
profils. Le fichier est copié dans le profil Base.
|
||||||
|
|
||||||
-L, --locals [WORKDIR]
|
--locals [WORKDIR]
|
||||||
Lister les fichiers locaux
|
Lister les fichiers locaux
|
||||||
|
|
||||||
-l, --profiles [WORKDIR]
|
--profiles [WORKDIR]
|
||||||
Lister les profils valides
|
Lister les profils valides
|
||||||
|
|
||||||
-s, --switch PROFILE [WORKDIR]
|
-s, --switch PROFILE [WORKDIR]
|
||||||
|
@ -190,13 +191,22 @@ supportées sont:
|
||||||
-e, --edit FILES...
|
-e, --edit FILES...
|
||||||
Editer des fichiers, implique --add-local
|
Editer des fichiers, implique --add-local
|
||||||
|
|
||||||
|
-d, --diff [DESTP [WORKDIR]]
|
||||||
|
-d, --diff [SRCP DESTP [WORKDIR]]
|
||||||
|
Afficher la différence entre entre deux profils. Avec la première
|
||||||
|
syntaxe, comparer le profil courant au profil DESTP. Avec la deuxième
|
||||||
|
syntaxe, comparer le profil SRCP au DESTP.
|
||||||
|
|
||||||
--infos [WORKDIR]
|
--infos [WORKDIR]
|
||||||
Afficher des informations sur le projet courant: profils, fichiers
|
Afficher des informations sur le projet courant: profils, fichiers
|
||||||
locaux, profil courant, etc. C'est la commande par défaut.
|
locaux, profil courant, etc. C'est la commande par défaut.
|
||||||
Les fichiers locaux sont taggés avec les valeurs suivantes
|
Les fichiers locaux sont taggés avec les valeurs suivantes
|
||||||
${COULEUR_ROUGE}P${COULEUR_NORMALE} il existe un patch pour ce fichier dans le profil courant
|
${COULEUR_ROUGE}P${COULEUR_NORMALE} il existe un patch pour ce fichier dans le profil courant
|
||||||
${COULEUR_BLEUE}*${COULEUR_NORMALE} ce fichier local est spécifique à ce profil
|
${COULEUR_BLEUE}*${COULEUR_NORMALE} ce fichier local est spécifique à ce profil
|
||||||
${COULEUR_BLEUE}C${COULEUR_NORMALE} ce fichier local est spécifique au profil Common"
|
$(get_color YELLOW)C${COULEUR_NORMALE} ce fichier local est spécifique au profil Common
|
||||||
|
-l, --details
|
||||||
|
Afficher tous les fichiers locaux au lieu de se contenter des fichiers
|
||||||
|
modifiés dans le profil courant."
|
||||||
}
|
}
|
||||||
|
|
||||||
# Nomenclature pour le nommage des fichiers traités:
|
# Nomenclature pour le nommage des fichiers traités:
|
||||||
|
@ -210,6 +220,10 @@ supportées sont:
|
||||||
# clink: la destination du lien cfile
|
# clink: la destination du lien cfile
|
||||||
# Plink: la destination du lien Pfile
|
# Plink: la destination du lien Pfile
|
||||||
|
|
||||||
|
function flexists() {
|
||||||
|
[ -e "$1" -o -L "$1" ]
|
||||||
|
}
|
||||||
|
|
||||||
function find_pffdir() {
|
function find_pffdir() {
|
||||||
# trouver le répertoire du projet pff à partir du répertoire $2(=.) et
|
# trouver le répertoire du projet pff à partir du répertoire $2(=.) et
|
||||||
# mettre le chemin absolu dans la variable $1(=pffdir)
|
# mettre le chemin absolu dans la variable $1(=pffdir)
|
||||||
|
@ -353,7 +367,7 @@ function sync_vlfiles() {
|
||||||
rfile="${vlfile%__pv-*__}"
|
rfile="${vlfile%__pv-*__}"
|
||||||
for profile in "${profiles[@]}"; do
|
for profile in "${profiles[@]}"; do
|
||||||
prefix="$pffdir/pff/$profile"
|
prefix="$pffdir/pff/$profile"
|
||||||
[ -e "$prefix/$rfile" ] || continue
|
flexists "$prefix/$rfile" || continue
|
||||||
pfile="$prefix/$vlfile"
|
pfile="$prefix/$vlfile"
|
||||||
setx plink=multiups "$profile/$vlfile" "Base/$vlfile"
|
setx plink=multiups "$profile/$vlfile" "Base/$vlfile"
|
||||||
if [ -L "$pfile" ]; then
|
if [ -L "$pfile" ]; then
|
||||||
|
@ -785,13 +799,13 @@ function add_global__link() {
|
||||||
local rfile bfile cfile plink clink tmp
|
local rfile bfile cfile plink clink tmp
|
||||||
|
|
||||||
setx rfile=get_rfile "$pfile" "$pffdir" || return
|
setx rfile=get_rfile "$pfile" "$pffdir" || return
|
||||||
[ -L "$pffdir/$rfile" -o -e "$pffdir/$rfile" ] || touch "$pffdir/$rfile"
|
flexists "$pffdir/$rfile" || touch "$pffdir/$rfile"
|
||||||
|
|
||||||
setx bfile=get_bfile "$pfile" "$pffdir"
|
setx bfile=get_bfile "$pfile" "$pffdir"
|
||||||
setx cfile=get_cfile "$pfile" "$pffdir"
|
setx cfile=get_cfile "$pfile" "$pffdir"
|
||||||
setx plink=multiups "$rfile" "pff/Current/$rfile"
|
setx plink=multiups "$rfile" "pff/Current/$rfile"
|
||||||
setx clink=multiups "Current/$rfile" "Base/$rfile"
|
setx clink=multiups "Current/$rfile" "Base/$rfile"
|
||||||
if [ -e "$bfile" -a -L "$pfile" -a -L "$cfile" ]; then
|
if flexists "$bfile" && [ -L "$pfile" -a -L "$cfile" ]; then
|
||||||
: # ok pour les liens
|
: # ok pour les liens
|
||||||
else
|
else
|
||||||
# Création des liens pour $rfile
|
# Création des liens pour $rfile
|
||||||
|
@ -815,7 +829,7 @@ function add_global_cmd() {
|
||||||
if [ -d "$file" ]; then
|
if [ -d "$file" ]; then
|
||||||
ewarn "$file: est un répertoire. argument ignoré"
|
ewarn "$file: est un répertoire. argument ignoré"
|
||||||
continue
|
continue
|
||||||
elif [ -L "$file" -o -e "$file" ]; then
|
elif flexists "$file"; then
|
||||||
:
|
:
|
||||||
else
|
else
|
||||||
ewarn "$file: fichier introuvable"
|
ewarn "$file: fichier introuvable"
|
||||||
|
@ -878,19 +892,19 @@ function add_local__link() {
|
||||||
local rfile bfile pfile Pfile plink Plink
|
local rfile bfile pfile Pfile plink Plink
|
||||||
# vérifier validité du chemin
|
# vérifier validité du chemin
|
||||||
setx rfile=get_rfile "$pfile" "$pffdir" || return
|
setx rfile=get_rfile "$pfile" "$pffdir" || return
|
||||||
[ -L "$pffdir/$rfile" -o -e "$pffdir/$rfile" ] || touch "$pffdir/$rfile"
|
flexists "$pffdir/$rfile" || touch "$pffdir/$rfile"
|
||||||
# vérifier la présence du lien global
|
# vérifier la présence du lien global
|
||||||
setx bfile=get_bfile "$pfile" "$pffdir"
|
setx bfile=get_bfile "$pfile" "$pffdir"
|
||||||
if [ ! -e "$bfile" ]; then
|
if ! flexists "$bfile"; then
|
||||||
add_global__link "$pfile" "$pffdir" || return
|
add_global__link "$pfile" "$pffdir" || return
|
||||||
fi
|
fi
|
||||||
# vérifier la présence du lien local
|
# vérifier la présence du lien local
|
||||||
setx Pfile=get_pfile "$pfile" "$profile" "$pffdir"
|
setx Pfile=get_pfile "$pfile" "$profile" "$pffdir"
|
||||||
[ -e "$Pfile" ] && return 0
|
flexists "$Pfile" && return 0
|
||||||
# créer le fichier local
|
# créer le fichier local
|
||||||
setx Cfile=get_Cfile "$pfile" "$pffdir"
|
setx Cfile=get_Cfile "$pfile" "$pffdir"
|
||||||
mkdirof "$Pfile"
|
mkdirof "$Pfile"
|
||||||
if [ -e "$Cfile" ]; then
|
if flexists "$Cfile"; then
|
||||||
# copier depuis le profil Common par défaut
|
# copier depuis le profil Common par défaut
|
||||||
cp "$Cfile" "$Pfile"
|
cp "$Cfile" "$Pfile"
|
||||||
else
|
else
|
||||||
|
@ -918,7 +932,7 @@ function add_local_cmd() {
|
||||||
if [ -d "$file" ]; then
|
if [ -d "$file" ]; then
|
||||||
ewarn "$file: est un répertoire. argument ignoré"
|
ewarn "$file: est un répertoire. argument ignoré"
|
||||||
continue
|
continue
|
||||||
elif [ -L "$file" -o -e "$file" ]; then
|
elif flexists "$file"; then
|
||||||
:
|
:
|
||||||
else
|
else
|
||||||
ewarn "$file: fichier introuvable"
|
ewarn "$file: fichier introuvable"
|
||||||
|
@ -976,10 +990,76 @@ function edit_cmd() {
|
||||||
return $r
|
return $r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#===========================================================
|
||||||
|
# pff --diff
|
||||||
|
|
||||||
|
function diff_cmd() {
|
||||||
|
local pffdir profile srcp destp
|
||||||
|
case $# in
|
||||||
|
0)
|
||||||
|
ensure_pffdir pffdir
|
||||||
|
setx srcp=get_current_profile "$pffdir"
|
||||||
|
destp=
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
if withpath "$1"; then
|
||||||
|
ensure_pffdir pffdir "$1"
|
||||||
|
setx srcp=get_current_profile "$pffdir"
|
||||||
|
destp=
|
||||||
|
else
|
||||||
|
ensure_pffdir pffdir
|
||||||
|
setx srcp=get_current_profile "$pffdir"
|
||||||
|
destp="$1"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
if withpath "$2"; then
|
||||||
|
ensure_pffdir pffdir "$2"
|
||||||
|
setx srcp=get_current_profile "$pffdir"
|
||||||
|
destp="$1"
|
||||||
|
else
|
||||||
|
ensure_pffdir pffdir
|
||||||
|
srcp="$1"
|
||||||
|
destp="$2"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ensure_pffdir pffdir "$3"
|
||||||
|
srcp="$1"
|
||||||
|
destp="$2"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
local -a lfiles; local rfile bfile Cfile srcfile destfile
|
||||||
|
setx -a lfiles=get_local_files "$pffdir"
|
||||||
|
|
||||||
|
for rfile in "${lfiles[@]}"; do
|
||||||
|
setx srcfile=get_pfile "$pffdir/$rfile" "$srcp" "$pffdir"
|
||||||
|
flexists "$srcfile" || continue
|
||||||
|
if [ -n "$destp" ]; then
|
||||||
|
setx destfile=get_pfile "$pffdir/$rfile" "$destp" "$pffdir"
|
||||||
|
else
|
||||||
|
setx Cfile=get_Cfile "$pffdir/$rfile" "$pffdir"
|
||||||
|
setx bfile=get_bfile "$pffdir/$rfile" "$pffdir"
|
||||||
|
# si on précise pas le profil destination, sélectionner dans l'ordre
|
||||||
|
# Common ou Base
|
||||||
|
if [ "$srcp" == Base -o "$srcp" == Common ]; then
|
||||||
|
destfile="$bfile"
|
||||||
|
elif flexists "$Cfile"; then
|
||||||
|
destfile="$Cfile"
|
||||||
|
else
|
||||||
|
destfile="$bfile"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
diff -ur "$srcfile" "$destfile"
|
||||||
|
done | page_maybe
|
||||||
|
}
|
||||||
|
|
||||||
#===========================================================
|
#===========================================================
|
||||||
# pff --infos
|
# pff --infos
|
||||||
|
|
||||||
function infos_cmd() {
|
function infos_cmd() {
|
||||||
|
local details="$1"; shift
|
||||||
local pffdir="$1"
|
local pffdir="$1"
|
||||||
local -a profiles vlfiles
|
local -a profiles vlfiles
|
||||||
local rfile Pfile flag
|
local rfile Pfile flag
|
||||||
|
@ -1002,7 +1082,9 @@ function infos_cmd() {
|
||||||
elif [ -f "$Pfile" ]; then
|
elif [ -f "$Pfile" ]; then
|
||||||
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "
|
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "
|
||||||
elif [ "$profile" != Common -a -f "$Cfile" ]; then
|
elif [ "$profile" != Common -a -f "$Cfile" ]; then
|
||||||
flag="${COULEUR_BLEUE}C${COULEUR_NORMALE} "
|
flag="$(get_color YELLOW)C${COULEUR_NORMALE} "
|
||||||
|
elif [ -z "$details" ]; then
|
||||||
|
continue
|
||||||
else
|
else
|
||||||
flag=" "
|
flag=" "
|
||||||
fi
|
fi
|
||||||
|
@ -1044,6 +1126,7 @@ disttype=auto
|
||||||
ORIGEXTS=("${DEFAULT_ORIGEXTS[@]}")
|
ORIGEXTS=("${DEFAULT_ORIGEXTS[@]}")
|
||||||
PROTECTS=("${DEFAULT_PROTECTS[@]}")
|
PROTECTS=("${DEFAULT_PROTECTS[@]}")
|
||||||
unwrap=auto
|
unwrap=auto
|
||||||
|
details=
|
||||||
args=(
|
args=(
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
-0,--init action=init
|
-0,--init action=init
|
||||||
|
@ -1060,12 +1143,14 @@ args=(
|
||||||
-E,--unwrap unwrap=1
|
-E,--unwrap unwrap=1
|
||||||
-p,--patch action=patch
|
-p,--patch action=patch
|
||||||
-a,--add-global action=add-global
|
-a,--add-global action=add-global
|
||||||
-L,--locals action=list-locals
|
--locals action=list-locals
|
||||||
-l,--profiles action=list-profiles
|
--profiles action=list-profiles
|
||||||
-s,--switch action=switch
|
-s,--switch action=switch
|
||||||
-b,--add-local action=add-local
|
-b,--add-local action=add-local
|
||||||
-e,--edit action=edit
|
-e,--edit action=edit
|
||||||
|
-d,--diff action=diff
|
||||||
--infos action=infos
|
--infos action=infos
|
||||||
|
-l,--details details=1
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
@ -1081,5 +1166,6 @@ list-profiles) list_profiles_cmd "$@";;
|
||||||
switch) switch_cmd "$@";;
|
switch) switch_cmd "$@";;
|
||||||
add-local) add_local_cmd "$@";;
|
add-local) add_local_cmd "$@";;
|
||||||
edit) edit_cmd "$@";;
|
edit) edit_cmd "$@";;
|
||||||
infos) infos_cmd "$@";;
|
diff) diff_cmd "$@";;
|
||||||
|
infos) infos_cmd "$details" "$@";;
|
||||||
esac
|
esac
|
||||||
|
|
Loading…
Reference in New Issue