diff --git a/README b/README index 83c6f5ec476d34192d76eff6722417994fdf3f3e..e9e1111501b4b1f300aac2cbc39389498704273e 100644 --- a/README +++ b/README @@ -3,11 +3,15 @@ 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 * Installer le package python-gnupg * 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>" diff --git a/cranspasswords_bash_completion b/bash_completion similarity index 69% rename from cranspasswords_bash_completion rename to bash_completion index d0712ac986a893c4fea3f06dd97c1b975c11a262..90c0b7af320f220943643d53684bcdd51855aefd 100644 --- a/cranspasswords_bash_completion +++ b/bash_completion @@ -1,19 +1,21 @@ # 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 - - role_dir="/tmp/cranspasswords-$USER-role/" - pass_dir="/tmp/cranspasswords-$USER-passwords/" + 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 + + # 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 - + #COMPREPLY désigne la réponse à renvoyer pour la complétion actuelle COMPREPLY=() # argc : vaut le nombre d'argument actuel sur la ligne de commande argc=${COMP_CWORD}; - + # cur : désigne la chaine de caractère actuelle pour le dernier mot de la ligne de commande first="${COMP_WORDS[1]}" last="${COMP_WORDS[$(($argc - 1 ))]}" @@ -22,25 +24,25 @@ _cranspasswords(){ cur_first_char=${cur:0:1} 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" - - + + mkdir -p -m 700 "$role_dir" mkdir -p -m 700 "$pass_dir" find "$role_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 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 COMPREPLY=( $(compgen -W "$opts" -- $cur ) ) @@ -48,39 +50,41 @@ 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 ) ) return 0 fi - + 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