diff --git a/bash_completion b/bash_completion index db05f650f85606be23c0d1aa6707250de356ec38..c50e429fe404770908c8637d936193276de3773d 100644 --- a/bash_completion +++ b/bash_completion @@ -23,7 +23,7 @@ _cranspasswords_completion(){ cur="${COMP_WORDS[argc]}" 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-files --roles --list-servers" + opts="--help --server --verbose --quiet --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-files --roles --list-servers" mkdir -p -m 700 "$role_dir" mkdir -p -m 700 "$pass_dir" @@ -48,14 +48,14 @@ _cranspasswords_completion(){ fi if [[ "$last" = "--server" ]]; then - server_list="`$cmd_name --list-servers | grep -- "*" | awk '{print $2}'`" + server_list="`$cmd_name --quiet --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 "`$cmd_name --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server" + echo "`$cmd_name --quiet --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server" fi role_list="`cat "${role_dir}$server"`" COMPREPLY=( $(compgen -W "$role_list" -- $cur ) ) @@ -64,7 +64,7 @@ _cranspasswords_completion(){ if [[ "$last" = "--edit" ]]; then if [ ! -f "${pass_dir}${server}-w" ]; then - echo "`$cmd_name --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}${server}-w" + echo "`$cmd_name --quiet --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,7 +73,7 @@ _cranspasswords_completion(){ if true; then if [ ! -f "${pass_dir}$server" ]; then - echo "`$cmd_name --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server" + echo "`$cmd_name --quiet --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server" fi pass_list="`cat "${pass_dir}$server"`" COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) ) diff --git a/cranspasswords.py b/cranspasswords.py index 663e3a00828985b901acd3e23c8225bfb9f074c0..6dcb4e206e1bfa8a48ff7e9ef3f5127616d2e50d 100755 --- a/cranspasswords.py +++ b/cranspasswords.py @@ -19,11 +19,16 @@ import re import random import string import datetime -#import gnupg #disponible seulement sous wheezy +try: + import gnupg #disponible seulement sous wheezy +except ImportError: + if sys.stderr.isatty() and not any([opt in sys.argv for opt in ["-q", "--quiet"]]): + sys.stderr.write(u"Package python-gnupg introuvable, vous ne pourrez pas vérifiez les clés.\n".encode("utf-8")) try: import clientconfig as config except ImportError: - print "Read the README" + if sys.stderr.isatty() and not any([opt in sys.argv for opt in ["-q", "--quiet"]]): + sys.stderr.write(u"Va lire le fichier README.\n".encode("utf-8")) sys.exit(1) #: pattern utilisé pour détecter la ligne contenant le mot de passe dans les fichiers @@ -184,7 +189,8 @@ def check_keys(): failed = False for (mail, fpr) in keys.values(): if fpr: - if VERB: print (u"Checking %s" % (mail)).encode("utf-8") + if VERB: + print (u"Checking %s" % (mail)).encode("utf-8") corresponds = [key for key in localkeys if key["fingerprint"] == fpr] # On vérifie qu'on possède la clé… if len(corresponds) == 1: @@ -237,7 +243,8 @@ def encrypt(roles, contents): stdin.close() out = stdout.read().decode("utf-8") if out == '': - if VERB: print u"Échec de chiffrement".encode("utf-8") + if VERB: + print u"Échec de chiffrement".encode("utf-8") return None else: return out @@ -442,6 +449,7 @@ def remove_file(fname): def my_check_keys(): """Vérifie les clés et affiche un message en fonction du résultat""" + print u"Vérification que les clés sont valides (uid correspondant au login) et de confiance." print (check_keys() and u"Base de clés ok" or u"Erreurs dans la base").encode("utf-8") def my_update_keys(): @@ -496,6 +504,8 @@ if __name__ == "__main__": help="Utilisation d'un serveur alternatif (test, backup, etc)") parser.add_argument('-v', '--verbose', action='store_true', default=False, help="Mode verbeux") + parser.add_argument('-q', '--quiet', action='store_true', default=False, + help="Mode silencieux. Cache les message d'erreurs (override --verbose).") parser.add_argument('-c', '--clipboard', action='store_true', default=None, help="Stocker le mot de passe dans le presse papier") parser.add_argument('--no-clip', '--noclip', '--noclipboard', action='store_false', default=None, @@ -541,7 +551,8 @@ if __name__ == "__main__": parsed = parser.parse_args(sys.argv[1:]) SERVER = config.servers[parsed.server] - VERB = parsed.verbose + QUIET = parsed.quiet + VERB = parsed.verbose and not QUIET if parsed.clipboard != None: CLIPBOARD = parsed.clipboard FORCED = parsed.force @@ -551,8 +562,10 @@ if __name__ == "__main__": if parsed.action.func_code.co_argcount == 0: parsed.action() elif parsed.fname == None: - print u"Vous devez fournir un nom de fichier avec cette commande".encode("utf-8") - parser.print_help() + if not QUIET: + print u"Vous devez fournir un nom de fichier avec cette commande".encode("utf-8") + parser.print_help() + sys.exit(1) else: parsed.action(parsed.fname)