From 8c924a7cba5ffbbef218a639323b524e1fc26775 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 31 Mar 2025 09:30:29 +0200 Subject: [PATCH] feat: cli loads .rougailcli.yml file --- src/rougail/cli/__main__.py | 23 ++++++++++++++++++----- src/rougail/cli/config.py | 10 ++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/rougail/cli/__main__.py b/src/rougail/cli/__main__.py index 7fb3cdb..4da29af 100644 --- a/src/rougail/cli/__main__.py +++ b/src/rougail/cli/__main__.py @@ -24,9 +24,13 @@ from pathlib import Path from rougail import Rougail from rougail.config import get_rougail_config from rougail.utils import load_modules +from rougail.user_datas import UserDatas +try: + from rougail.user_data_yaml import RougailUserDataYaml +except ImportError: + RougailUserDataYaml = None try: from rougail.user_data_environment import RougailUserDataEnvironment - from rougail.user_datas import UserDatas except ImportError: RougailUserDataEnvironment = None @@ -42,11 +46,21 @@ def _main(): origin_prop = cmd_config.property.default('read_write', 'append') cmd_config.property.setdefault(frozenset(origin_prop | {"not_for_commandline"}), 'read_write', 'append') cmd_config.property.read_write() + fake_rougail_config = {'step.user_data': [],} + fake_user_datas = [] + if RougailUserDataYaml and Path(rougailconfig["cli.config_file"]).is_file(): + fake_rougail_config = {'step.user_data': 'yaml', + 'yaml.filename': [rougailconfig["cli.config_file"]], + 'yaml.file_with_secrets': 'all', + } + fake_user_datas.extend(RougailUserDataYaml(cmd_config, rougailconfig=fake_rougail_config).run()) if RougailUserDataEnvironment: fake_rougail_config = {'step.user_data': 'environment', 'environment.default_environment_name': 'ROUGAILCLI', } - user_data = UserDatas(cmd_config).user_datas(RougailUserDataEnvironment(cmd_config, rougailconfig=fake_rougail_config).run()) + fake_user_datas.extend(RougailUserDataEnvironment(cmd_config, rougailconfig=fake_rougail_config).run()) + if fake_user_datas: + user_data = UserDatas(cmd_config).user_datas(fake_user_datas) if user_data["errors"]: raise Exception(user_data["errors"][0]) if user_data["warnings"]: @@ -66,7 +80,6 @@ def _main(): user_data_names = rougailconfig["step.user_data"] except PropertiesOptionError: user_data_names = [] - output_name = rougailconfig["step.output"] # structural rougail = Rougail(rougailconfig) config = rougail.run() @@ -101,7 +114,6 @@ def _main(): err_warn = {"errors": [], "warnings": []} if user_data_names: config.property.read_write() - user_datas = [] for user_data_name in user_data_names: path = ( Path(__file__).parent.parent @@ -118,6 +130,7 @@ def _main(): err_warn["warnings"].extend(ret["warnings"]) # output config.property.read_only() + output_name = rougailconfig["step.output"] path = Path(__file__).parent.parent / ("output_" + output_name) / "__init__.py" if not path.is_file(): raise Exception( @@ -136,7 +149,7 @@ def _main(): def main(): global print_traceback - print_traceback = False + print_traceback = True try: _main() except Exception as err: diff --git a/src/rougail/cli/config.py b/src/rougail/cli/config.py index fb59392..84133c3 100644 --- a/src/rougail/cli/config.py +++ b/src/rougail/cli/config.py @@ -25,6 +25,16 @@ def get_rougail_config( ) -> dict: options = f""" cli: + description: {_('Command line option')} + + config_file: + description: {_('display debug informations')} + type: unix_filename + commandline: false + params: + allow_relative: true + default: .rougailcli.yml + debug: description: {_('display debug informations')} negative_description: {_('do not display debut informations')}