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:
parent
9734089f67
commit
86f3a06e9d
2 changed files with 34 additions and 26 deletions
8
README
8
README
|
@ -3,11 +3,15 @@ Ce dépôt git contient à la fois le programme client (à utiliser sur votre
|
||||||
ordinateur) et le serveur.
|
ordinateur) et le serveur.
|
||||||
|
|
||||||
== Installation et configuration du client ==
|
== 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
|
$ git clone git://git.crans.org/git/cranspasswords.git
|
||||||
* Copier clientconfig.example.py en clientconfig.py et adapter
|
* Copier clientconfig.example.py en clientconfig.py et adapter
|
||||||
à vos besoins
|
à vos besoins
|
||||||
* Installer le package python-gnupg
|
* Installer le package python-gnupg
|
||||||
* Si ce n'est déjà fait, indiquer votre clé publique sur gest_crans
|
* 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>"
|
||||||
|
|
|
@ -1,19 +1,21 @@
|
||||||
# Fonction de notre auto completion
|
# Fonction de notre auto completion
|
||||||
|
|
||||||
_cranspasswords(){
|
_cranspasswords_completion(){
|
||||||
# declaration des variables locales
|
# 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/"
|
# La commande ne s'appelle pas forcément cranspasswords
|
||||||
pass_dir="/tmp/cranspasswords-$USER-passwords/"
|
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)
|
# Combien de temps on garde les réponses du serveur en cache (en minutes)
|
||||||
timeout=5
|
timeout=5
|
||||||
|
|
||||||
#COMPREPLY désigne la réponse à renvoyer pour la complétion actuelle
|
#COMPREPLY désigne la réponse à renvoyer pour la complétion actuelle
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
# argc : vaut le nombre d'argument actuel sur la ligne de commande
|
# argc : vaut le nombre d'argument actuel sur la ligne de commande
|
||||||
argc=${COMP_CWORD};
|
argc=${COMP_CWORD};
|
||||||
|
|
||||||
# cur : désigne la chaine de caractère actuelle pour le dernier mot de la ligne de commande
|
# cur : désigne la chaine de caractère actuelle pour le dernier mot de la ligne de commande
|
||||||
first="${COMP_WORDS[1]}"
|
first="${COMP_WORDS[1]}"
|
||||||
last="${COMP_WORDS[$(($argc - 1 ))]}"
|
last="${COMP_WORDS[$(($argc - 1 ))]}"
|
||||||
|
@ -22,25 +24,25 @@ _cranspasswords(){
|
||||||
cur_first_char=${cur:0:1}
|
cur_first_char=${cur:0:1}
|
||||||
opts_short="-h -v -c -f -l"
|
opts_short="-h -v -c -f -l"
|
||||||
opts="--help --server --verbose --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-roles --roles --list-servers"
|
opts="--help --server --verbose --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-roles --roles --list-servers"
|
||||||
|
|
||||||
|
|
||||||
mkdir -p -m 700 "$role_dir"
|
mkdir -p -m 700 "$role_dir"
|
||||||
mkdir -p -m 700 "$pass_dir"
|
mkdir -p -m 700 "$pass_dir"
|
||||||
|
|
||||||
find "$role_dir" -type f -mmin +$timeout -exec rm -f {} \;
|
find "$role_dir" -type f -mmin +$timeout -exec rm -f {} \;
|
||||||
find "$pass_dir" -type f -mmin +$timeout -exec rm -f {} \;
|
find "$pass_dir" -type f -mmin +$timeout -exec rm -f {} \;
|
||||||
|
|
||||||
# On détermine si on utilsie un serveur alternatif
|
# On détermine si on utilsie un serveur alternatif
|
||||||
if [[ "${COMP_WORDS[*]}" = *" --server "* ]]; then
|
if [[ "${COMP_WORDS[*]}" = *" --server "* ]]; then
|
||||||
if [[ "$prev" = "--server" ]]; then
|
if [[ "$prev" = "--server" ]]; then
|
||||||
_cranspasswords_server=$last;
|
_memorize_server=$last;
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
_cranspasswords_server="default";
|
_memorize_server="default";
|
||||||
fi
|
fi
|
||||||
|
|
||||||
server=$_cranspasswords_server
|
server=$_memorize_server
|
||||||
|
|
||||||
# les options possibles pour notre auto-complétion
|
# les options possibles pour notre auto-complétion
|
||||||
if [[ $cur_first_char = "-" ]]; then
|
if [[ $cur_first_char = "-" ]]; then
|
||||||
COMPREPLY=( $(compgen -W "$opts" -- $cur ) )
|
COMPREPLY=( $(compgen -W "$opts" -- $cur ) )
|
||||||
|
@ -48,39 +50,41 @@ server=$_cranspasswords_server
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$last" = "--server" ]]; then
|
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 ) )
|
COMPREPLY=( $(compgen -W "$server_list" -- $cur ) )
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$last" = "--roles" ]]; then
|
if [[ "$last" = "--roles" ]]; then
|
||||||
if [ ! -f "${role_dir}$server" ]; 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
|
fi
|
||||||
role_list="`cat "${role_dir}$server"`"
|
role_list="`cat "${role_dir}$server"`"
|
||||||
COMPREPLY=( $(compgen -W "$role_list" -- $cur ) )
|
COMPREPLY=( $(compgen -W "$role_list" -- $cur ) )
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$last" = "--edit" ]]; then
|
if [[ "$last" = "--edit" ]]; then
|
||||||
if [ ! -f "${pass_dir}${server}-w" ]; 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
|
fi
|
||||||
pass_list="`cat "${pass_dir}${server}-w"`"
|
pass_list="`cat "${pass_dir}${server}-w"`"
|
||||||
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
|
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if true; then
|
if true; then
|
||||||
if [ ! -f "${pass_dir}$server" ]; 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
|
fi
|
||||||
pass_list="`cat "${pass_dir}$server"`"
|
pass_list="`cat "${pass_dir}$server"`"
|
||||||
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
|
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# On active l'auto-completion
|
# On n'active pas l'auto-completion parce qu'on ne connait pas le nom
|
||||||
complete -F _cranspasswords cranspasswords
|
# de la commande.
|
||||||
|
# Pensez à exécuter
|
||||||
|
# complete -F _cranspasswords_completion <nom de votre commande>
|
||||||
|
# pour avoir la complétion
|
Loading…
Add table
Add a link
Reference in a new issue