From ee3a4efd1d0f0ba6273a84b5b93c68e11f3029f1 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Fri, 2 Aug 2024 10:41:11 +0200 Subject: [PATCH] init --- src/rougail/cli/__init__.py | 0 src/rougail/cli/__main__.py | 85 +++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 src/rougail/cli/__init__.py create mode 100644 src/rougail/cli/__main__.py diff --git a/src/rougail/cli/__init__.py b/src/rougail/cli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/rougail/cli/__main__.py b/src/rougail/cli/__main__.py new file mode 100644 index 0000000..8d6e2ee --- /dev/null +++ b/src/rougail/cli/__main__.py @@ -0,0 +1,85 @@ +from tiramisu_cmdline_parser import TiramisuCmdlineParser +from tiramisu import Config +from pathlib import Path + +from rougail import Rougail +from rougail.config import get_rougail_config +from rougail.utils import load_modules + +try: + from rougail.doc import RougailDoc +except: + pass + +try: + from rougail.exporter import RougailExporter +except: + pass + +try: + from rougail.user_data_file import RougailUserDataFile +except: + pass + + +def main(): + rougailconfig = get_rougail_config(backward_compatibility=False) + cmd_config = rougailconfig.config + cmd_config.property.read_write() + cmd_config.property.add('not_for_commandline') + parser = TiramisuCmdlineParser(cmd_config, + add_no_option_to_boolean=False, + ) + parser.parse_args() + cmd_config.property.remove('not_for_commandline') + cmd_config.property.read_only() + if rougailconfig['step.output'] == 'doc': + doc(rougailconfig) + else: + # structural + rougail = Rougail(rougailconfig) + config = rougail.get_config() + config.property.read_only() + user_data_name = rougailconfig['step.user_data'] + if user_data_name == 'none': + user_data_module = None + elif user_data_name == 'file': + # data user + user_data_module = RougailUserDataFile(config, + rougailconfig, + ) + user_data_module.read() + else: + path = Path(__file__).parent.parent / ('user_data_' + user_data_name) / 'cli.py' + if not path.is_file(): + raise Exception(f'cannot find cli file for "user_data" module "{user_data_name}"') + module = load_modules('rougail.user_data_' + user_data_name + '.cli', str(path)) + user_data_module = module.run(rougailconfig, + config, + ) + if rougailconfig['step.output'] == 'exporter': + # output + exporter(rougailconfig, + config, + user_data_module, + ) + + +def doc(rougailconfig): + inventory = RougailDoc(rougailconfig=rougailconfig) + header = inventory.formater.header() + print(inventory.gen_doc()) + + +def exporter(rougailconfig, + config, + data_user + ): + export = RougailExporter(config, + rougailconfig, + ) + if data_user: + export.errors = data_user.errors + export.warnings = data_user.warnings + export.exporter() + export.print()