diff --git a/README b/README index 2fb08edd726758323236124af7e14a00aa6c857b..c288a4e5c7b5d2b861a69f85996bdc506383ced3 100644 --- a/README +++ b/README @@ -15,6 +15,15 @@ avant de lancer make install ou make install-server. * Assurez-vous d'avoir ~/bin dans votre $PATH * Exécutez cranspasswords test pour voir si vous arrivez à récupérer le mot de passe de test + * Si vous voulez pouvoir importer client.py pour faire des choses dans ipython par exemple, + comme votre sys.argv[0] ne sera pas "cranspasswords", il aura du mal à savoir où il doit + aller cherche sa config. + Aidez-le avec : + export CRANSPASSWORDS_CLIENT_CONFIG_DIR=/path/to/config/dir/ + + NB : le nom de cette variable n'est pas modifié + même si vous renommez la commande cranspasswords. + == Installation et configuration du serveur == * Copiez le dépôt git sur le serveur : $ git clone git://git.crans.org/git/cranspasswords.git diff --git a/client.py b/client.py index b4814a2583ecb1443dfb4a071145502bee105fee..8e939288b0fb6f14be2e2421fd7cf40c064092a1 100755 --- a/client.py +++ b/client.py @@ -25,15 +25,28 @@ import time import datetime # Import de la config +envvar = "CRANSPASSWORDS_CLIENT_CONFIG_DIR" try: # Oui, le nom de la commande est dans la config, mais on n'a pas encore accès à la config bootstrap_cmd_name = os.path.split(sys.argv[0])[1] sys.path.append(os.path.expanduser("~/.config/%s/" % (bootstrap_cmd_name,))) import clientconfig as config except ImportError: - 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) + ducktape_display_error = sys.stderr.isatty() and not any([opt in sys.argv for opt in ["-q", "--quiet"]]) + envspecified = os.getenv(envvar, None) + if envspecified is None: + if ducktape_display_error: + sys.stderr.write(u"Va lire le fichier README.\n".encode("utf-8")) + sys.exit(1) + else: + # On a spécifié à la main le dossier de conf + try: + sys.path.append(envspecified) + import clientconfig as config + except ImportError: + if ducktape_display_error: + sys.stderr.write(u"%s est spécifiée, mais aucune config pour le client ne peut être importée." % (envvar)) + sys.exit(1) #: Pattern utilisé pour détecter la ligne contenant le mot de passe dans les fichiers pass_regexp = re.compile('[\t ]*pass(?:word)?[\t ]*:[\t ]*(.*)\r?\n?$',