From 517cb1e745a6f60b3cbfdcc8390427644cb57d34 Mon Sep 17 00:00:00 2001
From: Vincent Le Gallic <legallic@crans.org>
Date: Tue, 30 Jul 2013 05:13:21 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20coup=20de=20os.getenv=20si=20on?=
 =?UTF-8?q?=20veut=20pouvoir=20sp=C3=A9cifier=20o=C3=B9=20est=20la=20conf?=
 =?UTF-8?q?=20client.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README    |  9 +++++++++
 client.py | 19 ++++++++++++++++---
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/README b/README
index 2fb08ed..c288a4e 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 b4814a2..8e93928 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?$',
-- 
GitLab