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
|
||||
pfb:-b
|
||||
pfe:-e
|
||||
pfd:-d
|
||||
)
|
||||
|
||||
ORIGEXT=pff
|
||||
|
@ -175,10 +176,10 @@ supportées sont:
|
|||
Ajouter/Identifier un fichier comme un fichier local pour tous les
|
||||
profils. Le fichier est copié dans le profil Base.
|
||||
|
||||
-L, --locals [WORKDIR]
|
||||
--locals [WORKDIR]
|
||||
Lister les fichiers locaux
|
||||
|
||||
-l, --profiles [WORKDIR]
|
||||
--profiles [WORKDIR]
|
||||
Lister les profils valides
|
||||
|
||||
-s, --switch PROFILE [WORKDIR]
|
||||
|
@ -190,13 +191,22 @@ supportées sont:
|
|||
-e, --edit FILES...
|
||||
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]
|
||||
Afficher des informations sur le projet courant: profils, fichiers
|
||||
locaux, profil courant, etc. C'est la commande par défaut.
|
||||
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_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:
|
||||
|
@ -210,6 +220,10 @@ supportées sont:
|
|||
# clink: la destination du lien cfile
|
||||
# Plink: la destination du lien Pfile
|
||||
|
||||
function flexists() {
|
||||
[ -e "$1" -o -L "$1" ]
|
||||
}
|
||||
|
||||
function find_pffdir() {
|
||||
# trouver le répertoire du projet pff à partir du répertoire $2(=.) et
|
||||
# mettre le chemin absolu dans la variable $1(=pffdir)
|
||||
|
@ -353,7 +367,7 @@ function sync_vlfiles() {
|
|||
rfile="${vlfile%__pv-*__}"
|
||||
for profile in "${profiles[@]}"; do
|
||||
prefix="$pffdir/pff/$profile"
|
||||
[ -e "$prefix/$rfile" ] || continue
|
||||
flexists "$prefix/$rfile" || continue
|
||||
pfile="$prefix/$vlfile"
|
||||
setx plink=multiups "$profile/$vlfile" "Base/$vlfile"
|
||||
if [ -L "$pfile" ]; then
|
||||
|
@ -785,13 +799,13 @@ function add_global__link() {
|
|||
local rfile bfile cfile plink clink tmp
|
||||
|
||||
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 cfile=get_cfile "$pfile" "$pffdir"
|
||||
setx plink=multiups "$rfile" "pff/Current/$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
|
||||
else
|
||||
# Création des liens pour $rfile
|
||||
|
@ -815,7 +829,7 @@ function add_global_cmd() {
|
|||
if [ -d "$file" ]; then
|
||||
ewarn "$file: est un répertoire. argument ignoré"
|
||||
continue
|
||||
elif [ -L "$file" -o -e "$file" ]; then
|
||||
elif flexists "$file"; then
|
||||
:
|
||||
else
|
||||
ewarn "$file: fichier introuvable"
|
||||
|
@ -878,19 +892,19 @@ function add_local__link() {
|
|||
local rfile bfile pfile Pfile plink Plink
|
||||
# vérifier validité du chemin
|
||||
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
|
||||
setx bfile=get_bfile "$pfile" "$pffdir"
|
||||
if [ ! -e "$bfile" ]; then
|
||||
if ! flexists "$bfile"; then
|
||||
add_global__link "$pfile" "$pffdir" || return
|
||||
fi
|
||||
# vérifier la présence du lien local
|
||||
setx Pfile=get_pfile "$pfile" "$profile" "$pffdir"
|
||||
[ -e "$Pfile" ] && return 0
|
||||
flexists "$Pfile" && return 0
|
||||
# créer le fichier local
|
||||
setx Cfile=get_Cfile "$pfile" "$pffdir"
|
||||
mkdirof "$Pfile"
|
||||
if [ -e "$Cfile" ]; then
|
||||
if flexists "$Cfile"; then
|
||||
# copier depuis le profil Common par défaut
|
||||
cp "$Cfile" "$Pfile"
|
||||
else
|
||||
|
@ -918,7 +932,7 @@ function add_local_cmd() {
|
|||
if [ -d "$file" ]; then
|
||||
ewarn "$file: est un répertoire. argument ignoré"
|
||||
continue
|
||||
elif [ -L "$file" -o -e "$file" ]; then
|
||||
elif flexists "$file"; then
|
||||
:
|
||||
else
|
||||
ewarn "$file: fichier introuvable"
|
||||
|
@ -976,10 +990,76 @@ function edit_cmd() {
|
|||
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
|
||||
|
||||
function infos_cmd() {
|
||||
local details="$1"; shift
|
||||
local pffdir="$1"
|
||||
local -a profiles vlfiles
|
||||
local rfile Pfile flag
|
||||
|
@ -1002,7 +1082,9 @@ function infos_cmd() {
|
|||
elif [ -f "$Pfile" ]; then
|
||||
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "
|
||||
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
|
||||
flag=" "
|
||||
fi
|
||||
|
@ -1044,6 +1126,7 @@ disttype=auto
|
|||
ORIGEXTS=("${DEFAULT_ORIGEXTS[@]}")
|
||||
PROTECTS=("${DEFAULT_PROTECTS[@]}")
|
||||
unwrap=auto
|
||||
details=
|
||||
args=(
|
||||
--help '$exit_with display_help'
|
||||
-0,--init action=init
|
||||
|
@ -1060,12 +1143,14 @@ args=(
|
|||
-E,--unwrap unwrap=1
|
||||
-p,--patch action=patch
|
||||
-a,--add-global action=add-global
|
||||
-L,--locals action=list-locals
|
||||
-l,--profiles action=list-profiles
|
||||
--locals action=list-locals
|
||||
--profiles action=list-profiles
|
||||
-s,--switch action=switch
|
||||
-b,--add-local action=add-local
|
||||
-e,--edit action=edit
|
||||
-d,--diff action=diff
|
||||
--infos action=infos
|
||||
-l,--details details=1
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
|
@ -1081,5 +1166,6 @@ list-profiles) list_profiles_cmd "$@";;
|
|||
switch) switch_cmd "$@";;
|
||||
add-local) add_local_cmd "$@";;
|
||||
edit) edit_cmd "$@";;
|
||||
infos) infos_cmd "$@";;
|
||||
diff) diff_cmd "$@";;
|
||||
infos) infos_cmd "$details" "$@";;
|
||||
esac
|
||||
|
|
Loading…
Reference in New Issue