diff --git a/src/rougail/cli/__main__.py b/src/rougail/cli/__main__.py index 0e570f4..bd43da1 100644 --- a/src/rougail/cli/__main__.py +++ b/src/rougail/cli/__main__.py @@ -37,7 +37,7 @@ except ImportError: from .i18n import _ -def _main(): +def _main(arguments, do_not_print): rougailconfig = get_rougail_config( backward_compatibility=False, add_extra_options=False ) @@ -69,10 +69,10 @@ def _main(): raise Exception(user_data["warnings"][0]) parser = TiramisuCmdlineParser( cmd_config, - add_extra_options=False, +# add_extra_options=False, short_name_max_len=2, ) - parser.parse_args() + parser.parse_args(arguments) global print_traceback print_traceback = rougailconfig["cli.debug"] cmd_config.property.setdefault(origin_prop, 'read_write', 'append') @@ -163,21 +163,24 @@ def _main(): _('cannot find cli file for "output_name" module "{0}"').format(output_name) ) module = load_modules("rougail.output_" + output_name, str(path)) - ret = module.RougailOutput( + output = module.RougailOutput( config=config, rougailconfig=rougailconfig, user_data_errors=err_warn["errors"], user_data_warnings=err_warn["warnings"], - ).print() + ) + if do_not_print: + return output.run() + ret = output.print() if ret is False: exit(1) -def main(): +def main(arguments=None, do_not_print=False): global print_traceback print_traceback = True try: - _main() + return _main(arguments, do_not_print) except Exception as err: if print_traceback: import traceback diff --git a/tests/cli/result.txt b/tests/cli/result.txt new file mode 100644 index 0000000..d21539d --- /dev/null +++ b/tests/cli/result.txt @@ -0,0 +1,5 @@ +╭─────── Caption ────────╮ +│ Variable Default value │ +╰────────────────────────╯ +Variables: +┗━━ 📓 my_variable: my_value diff --git a/tests/cli/structures/file.yml b/tests/cli/structures/file.yml new file mode 100644 index 0000000..2fe5aef --- /dev/null +++ b/tests/cli/structures/file.yml @@ -0,0 +1,4 @@ +--- +version: 1.1 + +my_variable: my_value diff --git a/tests/test_load.py b/tests/test_load.py new file mode 100644 index 0000000..818903c --- /dev/null +++ b/tests/test_load.py @@ -0,0 +1,43 @@ +from pathlib import Path +from os import chdir + +from rougail.cli.__main__ import main + + +test_dir = Path(__file__).parent + + +def test_cli(): + chdir(test_dir / 'cli') + ret = main(['--main_dictionaries', 'structures'], do_not_print=True) + filename = Path('result.txt') + if not filename.is_file(): + with filename.open('w') as fh: + fh.write(ret[1]) + with filename.open() as fh: + data = fh.read() + assert ret == (True, data) + + +def test_cli_boolean(): + chdir(test_dir / 'cli') + ret = main(['--main_dictionaries', 'structures', '--console.mandatory'], do_not_print=True) + filename = Path('result.txt') + if not filename.is_file(): + with filename.open('w') as fh: + fh.write(ret[1]) + with filename.open() as fh: + data = fh.read() + assert ret == (True, data) + + +def test_cli_boolean_2(): + chdir(test_dir / 'cli') + ret = main(['--main_dictionaries', 'structures', '--console.no-mandatory'], do_not_print=True) + filename = Path('result.txt') + if not filename.is_file(): + with filename.open('w') as fh: + fh.write(ret[1]) + with filename.open() as fh: + data = fh.read() + assert ret == (True, data)