From 7b44b67ac2d9af6ddfbe23484997eafc4db5f71a Mon Sep 17 00:00:00 2001
From: Bastien Le Querrec <blq@laquadrature.net>
Date: Mon, 11 Nov 2024 20:18:02 +0100
Subject: [PATCH] =?UTF-8?q?cli:=20g=C3=A9n=C3=A8re=20correctement=20la=20c?=
 =?UTF-8?q?onfiguration?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 cli.py | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/cli.py b/cli.py
index a9b64e7..d562c04 100755
--- a/cli.py
+++ b/cli.py
@@ -1,21 +1,40 @@
 #!/usr/bin/env python3
 
 import argparse
+import logging
 import os
 import re
 import sys
 import yaml
 
+from Attrap_bot import Attrap_bot
+
+# On paramètre le niveau de verbosité des logs
+logging.basicConfig(level=os.environ.get('LOG_LEVEL', 'WARNING').upper())
+logger = logging.getLogger(__name__)
+
+
 def create_config(keys, value):
-    if type(value) == str:
-        value = value.replace('FalseFalse', False).replace(0, False).replace('False', False)
-        value = value.replace('TrueTrue', True).replace(1, True).replace('True', True)
+    if isinstance(value, str):
+        if value in ['FalseFalse', 'False', '0']:
+            value = False
+        if value in ['TrueTrue', 'True', '1']:
+            value = True
     if not keys[:-1] == []:
         return create_config(keys[:-1], {keys[-1]: value})
     else:
         return {keys[-1]: value}
 
-from Attrap_bot import Attrap_bot
+def merge_dicts(a: dict, b: dict, path=[]):
+    for key in b:
+        if key in a:
+            if isinstance(a[key], dict) and isinstance(b[key], dict):
+                merge_dicts(a[key], b[key], path + [str(key)])
+            elif a[key] != b[key]:
+                raise Exception()
+        else:
+            a[key] = b[key]
+    return a
 
 parser = argparse.ArgumentParser(
     prog='cli.py',
@@ -45,7 +64,10 @@ else:
         if var.startswith('ATTRAP_BOT__'):
             key = var[12:].lower()
             value = os.environ[var]
-            config = config | create_config(re.split('__', key), value)
+            created_config = create_config(re.split('__', key), value)
+            config = merge_dicts(config, created_config)
+
+    logging.debug(f'Configuration : {config}')
 
 bot = Attrap_bot(config)
 bot.analyze()
-- 
GitLab