diff --git a/bin/rougail b/bin/rougail new file mode 100755 index 0000000..79a0480 --- /dev/null +++ b/bin/rougail @@ -0,0 +1,8 @@ +#! /usr/bin/python3 -sP +# -*- coding: utf-8 -*- +import re +import sys +from rougail.cli.__main__ import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) 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()