Mercurial > repos > guerler > springsuite
diff planemo/lib/python3.7/site-packages/galaxy/util/script.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo/lib/python3.7/site-packages/galaxy/util/script.py Fri Jul 31 00:32:28 2020 -0400 @@ -0,0 +1,89 @@ +"""Utilities for Galaxy scripts +""" +import argparse +import os +import sys + +from galaxy.util.properties import find_config_file, load_app_properties + +DESCRIPTION = None +ACTIONS = None +ARGUMENTS = None +DEFAULT_ACTION = None + +ARG_HELP_CONFIG_FILE = """ +Galaxy config file (defaults to $GALAXY_ROOT/config/galaxy.yml if that file exists +or else to ./config/galaxy.ini if that exists). If this isn't set on the +command line it can be set with the environment variable GALAXY_CONFIG_FILE. +""" + +# ARG_HELP_CONFIG_SECTION = """ +# Section containing application configuration in the target config file specified with +# -c/--config-file. This defaults to 'galaxy' for YAML/JSON configuration files and 'main' +# with 'app:' prepended for INI. If this isn't set on the command line it can be set with +# the environment variable GALAXY_CONFIG_SECTION. +# """ + + +def main_factory(description=None, actions=None, arguments=None, default_action=None): + global DESCRIPTION, ACTIONS, ARGUMENTS, DEFAULT_ACTION + DESCRIPTION = description + ACTIONS = actions or {} + ARGUMENTS = arguments or [] + DEFAULT_ACTION = default_action + return main + + +def main(argv=None): + """Entry point for conversion process.""" + if argv is None: + argv = sys.argv[1:] + args = _arg_parser().parse_args(argv) + kwargs = app_properties_from_args(args) + action = args.action + action_func = ACTIONS[action] + action_func(args, kwargs) + + +def app_properties_from_args(args, legacy_config_override=None, app=None): + config_file = config_file_from_args(args, legacy_config_override=legacy_config_override, app=app) + config_section = getattr(args, "config_section", None) + app_properties = load_app_properties(config_file=config_file, config_section=config_section) + return app_properties + + +def config_file_from_args(args, legacy_config_override=None, app=None): + app = app or getattr(args, "app", "galaxy") + config_file = legacy_config_override or args.config_file or find_config_file(app) + return config_file + + +def populate_config_args(parser): + # config and config-file respected because we have used different arguments at different + # time for scripts. + + # Options (e.g. option_name) not found in this file can have their defaults overridden + # set setting GALAXY_CONFIG_OPTION_NAME where OPTION_NAME is option_name converted to upper case. + # Options specified in that file can be overridden for this program set setting + # GALAXY_CONFIG_OVERRIDE_OPTION_NAME to a new value. + parser.add_argument("-c", "--config-file", "--config", + default=os.environ.get('GALAXY_CONFIG_FILE', None), + help=ARG_HELP_CONFIG_FILE) + parser.add_argument("--config-section", + default=os.environ.get('GALAXY_CONFIG_SECTION', None), + help=argparse.SUPPRESS) # See ARG_HELP_CONFIG_SECTION comment above for unsuppressed details. + + +def _arg_parser(): + parser = argparse.ArgumentParser(description=DESCRIPTION) + parser.add_argument('action', metavar='ACTION', type=str, + choices=list(ACTIONS.keys()), + default=DEFAULT_ACTION, + nargs='?' if DEFAULT_ACTION is not None else None, + help='action to perform') + populate_config_args(parser) + parser.add_argument("--app", + default=os.environ.get('GALAXY_APP', 'galaxy')) + for argument in ARGUMENTS: + parser.add_argument(*argument[0], **argument[1]) + return parser