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