On déshardcode "cranspasswords" de la bash_completion.

Attention : on perd la backward compatibility sur la bash_completion.
 * En effet, non seulement le fichier a été renommé
 * mais en plus, il ne load plus la fonction de complétion, c'est à la charg
   de l'utilisateur, comme ça il peut choisir le nom de sa fonction,
   et pas forcément "cranspasswords"
This commit is contained in:
Vincent Le Gallic 2013-07-27 18:37:26 +02:00
parent 9734089f67
commit 86f3a06e9d
2 changed files with 34 additions and 26 deletions

6
README
View file

@ -3,7 +3,7 @@ Ce dépôt git contient à la fois le programme client (à utiliser sur votre
ordinateur) et le serveur.
== Installation et configuration du client ==
* Copier le dépôt git sur votre ordinateur :
* Copier le dépôt git sur votre machine :
$ git clone git://git.crans.org/git/cranspasswords.git
* Copier clientconfig.example.py en clientconfig.py et adapter
à vos besoins
@ -11,3 +11,7 @@ ordinateur) et le serveur.
* Si ce n'est déjà fait, indiquer votre clé publique sur gest_crans
* ???
== Complétion ==
* Pour avoir la bash-complétion, dans votre .bashrc :
* Sourcez le fichier bash_completion présent dans le dépôt
* exécutez "complete -F _cranspasswords_completion <nom de votre commande>"

View file

@ -1,11 +1,13 @@
# Fonction de notre auto completion
_cranspasswords(){
_cranspasswords_completion(){
# declaration des variables locales
local argc first last prev cur cur_first_char opts_short opts role_dir pass_dir server server_list role_list pass_list timeout
local argc first last prev cur cur_first_char opts_short opts role_dir pass_dir server server_list role_list pass_list timeout cmd_name
role_dir="/tmp/cranspasswords-$USER-role/"
pass_dir="/tmp/cranspasswords-$USER-passwords/"
# La commande ne s'appelle pas forcément cranspasswords
cmd_name=$1
role_dir="/tmp/$cmd_name-$USER-role/"
pass_dir="/tmp/$cmd_name-$USER-passwords/"
# Combien de temps on garde les réponses du serveur en cache (en minutes)
timeout=5
@ -33,13 +35,13 @@ _cranspasswords(){
# On détermine si on utilsie un serveur alternatif
if [[ "${COMP_WORDS[*]}" = *" --server "* ]]; then
if [[ "$prev" = "--server" ]]; then
_cranspasswords_server=$last;
_memorize_server=$last;
fi
else
_cranspasswords_server="default";
_memorize_server="default";
fi
server=$_cranspasswords_server
server=$_memorize_server
# les options possibles pour notre auto-complétion
if [[ $cur_first_char = "-" ]]; then
@ -48,23 +50,23 @@ server=$_cranspasswords_server
fi
if [[ "$last" = "--server" ]]; then
server_list="`cranspasswords --list-servers | grep -- "*" | awk '{print $2}'`"
server_list="`$cmd_name --list-servers | grep -- "*" | awk '{print $2}'`"
COMPREPLY=( $(compgen -W "$server_list" -- $cur ) )
return 0
fi
if [[ "$last" = "--roles" ]]; then
if [ ! -f "${role_dir}$server" ]; then
echo "`cranspasswords --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server"
echo "`$cmd_name --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server"
fi
role_list="`cat "${role_dir}$server"`"
COMPREPLY=( $(compgen -W "$role_list" -- $cur ) )
return 0
fi
if [[ "$last" = "--edit" ]]; then
if [[ "$last" = "--edit" ]]; then
if [ ! -f "${pass_dir}${server}-w" ]; then
echo "`cranspasswords --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}${server}-w"
echo "`$cmd_name --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}${server}-w"
fi
pass_list="`cat "${pass_dir}${server}-w"`"
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
@ -73,14 +75,16 @@ server=$_cranspasswords_server
if true; then
if [ ! -f "${pass_dir}$server" ]; then
echo "`cranspasswords --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server"
echo "`$cmd_name --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server"
fi
pass_list="`cat "${pass_dir}$server"`"
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
return 0
fi
}
# On active l'auto-completion
complete -F _cranspasswords cranspasswords
# On n'active pas l'auto-completion parce qu'on ne connait pas le nom
# de la commande.
# Pensez à exécuter
# complete -F _cranspasswords_completion <nom de votre commande>
# pour avoir la complétion