Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/galaxy/util/script.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
| author | shellac |
|---|---|
| date | Mon, 22 Mar 2021 18:12:50 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4f3585e2f14b |
|---|---|
| 1 """Utilities for Galaxy scripts | |
| 2 """ | |
| 3 import argparse | |
| 4 import logging | |
| 5 import os | |
| 6 import sys | |
| 7 | |
| 8 from galaxy.util.properties import find_config_file, load_app_properties | |
| 9 | |
| 10 DESCRIPTION = None | |
| 11 ACTIONS = None | |
| 12 ARGUMENTS = None | |
| 13 DEFAULT_ACTION = None | |
| 14 | |
| 15 ARG_HELP_CONFIG_FILE = """ | |
| 16 Galaxy config file (defaults to $GALAXY_ROOT/config/galaxy.yml if that file exists | |
| 17 or else to ./config/galaxy.ini if that exists). If this isn't set on the | |
| 18 command line it can be set with the environment variable GALAXY_CONFIG_FILE. | |
| 19 """ | |
| 20 | |
| 21 # ARG_HELP_CONFIG_SECTION = """ | |
| 22 # Section containing application configuration in the target config file specified with | |
| 23 # -c/--config-file. This defaults to 'galaxy' for YAML/JSON configuration files and 'main' | |
| 24 # with 'app:' prepended for INI. If this isn't set on the command line it can be set with | |
| 25 # the environment variable GALAXY_CONFIG_SECTION. | |
| 26 # """ | |
| 27 | |
| 28 | |
| 29 def main_factory(description=None, actions=None, arguments=None, default_action=None): | |
| 30 global DESCRIPTION, ACTIONS, ARGUMENTS, DEFAULT_ACTION | |
| 31 DESCRIPTION = description | |
| 32 ACTIONS = actions or {} | |
| 33 ARGUMENTS = arguments or [] | |
| 34 DEFAULT_ACTION = default_action | |
| 35 return main | |
| 36 | |
| 37 | |
| 38 def main(argv=None): | |
| 39 """Entry point for conversion process.""" | |
| 40 if argv is None: | |
| 41 argv = sys.argv[1:] | |
| 42 args = _arg_parser().parse_args(argv) | |
| 43 kwargs = app_properties_from_args(args) | |
| 44 action = args.action | |
| 45 action_func = ACTIONS[action] | |
| 46 action_func(args, kwargs) | |
| 47 | |
| 48 | |
| 49 def app_properties_from_args(args, legacy_config_override=None, app=None): | |
| 50 config_file = config_file_from_args(args, legacy_config_override=legacy_config_override, app=app) | |
| 51 config_section = getattr(args, "config_section", None) | |
| 52 app_properties = load_app_properties(config_file=config_file, config_section=config_section) | |
| 53 return app_properties | |
| 54 | |
| 55 | |
| 56 def config_file_from_args(args, legacy_config_override=None, app=None): | |
| 57 app = app or getattr(args, "app", "galaxy") | |
| 58 config_file = legacy_config_override or args.config_file or find_config_file(app) | |
| 59 return config_file | |
| 60 | |
| 61 | |
| 62 def populate_config_args(parser): | |
| 63 # config and config-file respected because we have used different arguments at different | |
| 64 # time for scripts. | |
| 65 | |
| 66 # Options (e.g. option_name) not found in this file can have their defaults overridden | |
| 67 # set setting GALAXY_CONFIG_OPTION_NAME where OPTION_NAME is option_name converted to upper case. | |
| 68 # Options specified in that file can be overridden for this program set setting | |
| 69 # GALAXY_CONFIG_OVERRIDE_OPTION_NAME to a new value. | |
| 70 parser.add_argument("-c", "--config-file", "--config", | |
| 71 default=os.environ.get('GALAXY_CONFIG_FILE', None), | |
| 72 help=ARG_HELP_CONFIG_FILE) | |
| 73 parser.add_argument("--config-section", | |
| 74 default=os.environ.get('GALAXY_CONFIG_SECTION', None), | |
| 75 help=argparse.SUPPRESS) # See ARG_HELP_CONFIG_SECTION comment above for unsuppressed details. | |
| 76 | |
| 77 | |
| 78 def _arg_parser(): | |
| 79 parser = argparse.ArgumentParser(description=DESCRIPTION) | |
| 80 parser.add_argument('action', metavar='ACTION', type=str, | |
| 81 choices=list(ACTIONS.keys()), | |
| 82 default=DEFAULT_ACTION, | |
| 83 nargs='?' if DEFAULT_ACTION is not None else None, | |
| 84 help='action to perform') | |
| 85 populate_config_args(parser) | |
| 86 parser.add_argument("--app", | |
| 87 default=os.environ.get('GALAXY_APP', 'galaxy')) | |
| 88 for argument in ARGUMENTS: | |
| 89 parser.add_argument(*argument[0], **argument[1]) | |
| 90 return parser | |
| 91 | |
| 92 | |
| 93 def set_log_handler(filename=None, stream=None): | |
| 94 if filename: | |
| 95 handler = logging.FileHandler(filename) | |
| 96 else: | |
| 97 handler = logging.StreamHandler(stream=stream) | |
| 98 return handler |
