Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.util.script

"""Utilities for Galaxy scripts
"""
import argparse
import logging
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.
# """


[docs]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
[docs]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)
[docs]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
[docs]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
[docs]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
[docs]def set_log_handler(filename=None, stream=None): if filename: handler = logging.FileHandler(filename) else: handler = logging.StreamHandler(stream=stream) return handler