completion automatique

This commit is contained in:
Jephté Clain 2018-02-01 14:26:30 +04:00
parent 151e083a49
commit 4a8c5d1e3d
2 changed files with 49 additions and 18 deletions

View File

@ -48,7 +48,7 @@ bcdir=lib/completion.d
./pdev --nutools-completion >"$bcdir/pdev" ./pdev --nutools-completion >"$bcdir/pdev"
./prel --nutools-completion >"$bcdir/prel" ./prel --nutools-completion >"$bcdir/prel"
#./pfix --nutools-completion >"$bcdir/pfix" #./pfix --nutools-completion >"$bcdir/pfix"
#./pff --nutools-completion >"$bcdir/pff" ./pff --nutools-completion >"$bcdir/pff"
# copier le fichier .nutoolsrc # copier le fichier .nutoolsrc
[ -f ~/.nutoolsrc ] || cp lib/nutoolsrc ~/.nutoolsrc [ -f ~/.nutoolsrc ] || cp lib/nutoolsrc ~/.nutoolsrc

59
pff
View File

@ -8,6 +8,18 @@ SCRIPT_ALIASES=(
pfe:-e pfe:-e
) )
ORIGEXT=pff
DEFAULT_ORIGEXTS=(".$ORIGEXT" .origine .default)
PFFCONF=.pff.conf # ne pas modifier
DEFAULT_PROTECTS=(/.git/ .svn/ /pff/ "/$PFFCONF")
PFFCONFVARS=(
"VERSION//Version actuellement installée"
-a
"PVERSIONS//Versions en attente d'intégration"
"ORIGEXTS=//Extensions origines"
)
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
# créer les liens # créer les liens
scriptname="$(basename -- "$0")" scriptname="$(basename -- "$0")"
@ -19,14 +31,45 @@ if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
elif [ $# -eq 1 -a "$1" == --nutools-completion ]; then elif [ $# -eq 1 -a "$1" == --nutools-completion ]; then
echo ' echo '
function __pff_profiles() { function __pff_profiles() {
: #TODO local cwd="$(pwd)"
local pffdir="$cwd"
while true; do
if [ -f "$pffdir/'"$PFFCONF"'" -a -d "$pffdir/pff" ]; then
cd "$pffdir/pff"
/bin/ls -1d * | while read f; do
[ -d "$f" -a "$f" != Current ] || continue
f="$1$f"
if [[ "${f:0:2}" == -[eEn] ]]; then
echo -n -
echo "${f:1}"
else
echo "$f"
fi
done
cd "$cwd"
break
fi
[ "$pffdir" == / -o "$pffdir" == "$HOME" ] && break
pffdir="$(dirname -- "$pffdir")"
done
} }
function __pfs_completion() { function __pfs_completion() {
local cur local cur
_get_comp_words_by_ref cur _get_comp_words_by_ref cur
COMPREPLY=($(compgen -W "$(__pff_profiles)" "$cur")) COMPREPLY=($(compgen -W "$(__pff_profiles)" "$cur"))
} }
complete -F __pfs_completion pfs complete -F __pfs_completion -o bashdefault -o default pfs
function __pff_completion() {
local cur prev opt comp
_get_comp_words_by_ref cur prev
if [[ "$prev" == -*s ]]; then
COMPREPLY=($(compgen -W "$(__pff_profiles)" -- "$cur"))
elif [[ "$cur" == -*s* ]]; then
comp="${cur#-*s}"; opt="${cur:0:$((${#cur}-${#comp}))}"
COMPREPLY=($(compgen -W "$(__pff_profiles "$opt")" -- "$cur"))
fi
}
complete -F __pff_completion -o bashdefault -o default pff
' '
exit 0 exit 0
fi fi
@ -152,18 +195,6 @@ 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
ORIGEXT=pff
DEFAULT_ORIGEXTS=(".$ORIGEXT" .origine .default)
PFFCONF=.pff.conf # ne pas modifier
DEFAULT_PROTECTS=(/.git/ .svn/ /pff/ "/$PFFCONF")
PFFCONFVARS=(
"VERSION//Version actuellement installée"
-a
"PVERSIONS//Versions en attente d'intégration"
"ORIGEXTS=//Extensions origines"
)
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)