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 tool_shed.galaxy_install.tool_dependencies.recipe.recipe_manager

import logging

from tool_shed.galaxy_install.tool_dependencies.recipe import step_handler
from tool_shed.galaxy_install.tool_dependencies.recipe import tag_handler

log = logging.getLogger(__name__)


[docs]class StepManager(object):
[docs] def __init__(self, app): self.app = app self.step_handlers_by_type = self.load_step_handlers()
[docs] def get_step_handler_by_type(self, type): return self.step_handlers_by_type.get(type, None)
[docs] def execute_step(self, tool_dependency, package_name, actions, action_type, action_dict, filtered_actions, env_file_builder, install_environment, work_dir, current_dir=None, initial_download=False): if actions: step_handler = self.get_step_handler_by_type(action_type) tool_dependency, filtered_actions, dir = step_handler.execute_step(tool_dependency=tool_dependency, package_name=package_name, actions=actions, action_dict=action_dict, filtered_actions=filtered_actions, env_file_builder=env_file_builder, install_environment=install_environment, work_dir=work_dir, current_dir=current_dir, initial_download=initial_download) else: dir = None return tool_dependency, filtered_actions, dir
[docs] def load_step_handlers(self): step_handlers_by_type = dict(assert_directory_executable=step_handler.AssertDirectoryExecutable(self.app), assert_directory_exists=step_handler.AssertDirectoryExists(self.app), assert_file_executable=step_handler.AssertFileExecutable(self.app), assert_file_exists=step_handler.AssertFileExists(self.app), autoconf=step_handler.Autoconf(self.app), change_directory=step_handler.ChangeDirectory(self.app), chmod=step_handler.Chmod(self.app), download_binary=step_handler.DownloadBinary(self.app), download_by_url=step_handler.DownloadByUrl(self.app), download_file=step_handler.DownloadFile(self.app), make_directory=step_handler.MakeDirectory(self.app), make_install=step_handler.MakeInstall(self.app), move_directory_files=step_handler.MoveDirectoryFiles(self.app), move_file=step_handler.MoveFile(self.app), regex_replace=step_handler.RegexReplace(self.app), set_environment=step_handler.SetEnvironment(self.app), set_environment_for_install=step_handler.SetEnvironmentForInstall(self.app), setup_perl_environment=step_handler.SetupPerlEnvironment(self.app), setup_r_environment=step_handler.SetupREnvironment(self.app), setup_ruby_environment=step_handler.SetupRubyEnvironment(self.app), setup_python_environment=step_handler.SetupPythonEnvironment(self.app), setup_virtualenv=step_handler.SetupVirtualEnv(self.app), shell_command=step_handler.ShellCommand(self.app), template_command=step_handler.TemplateCommand(self.app)) return step_handlers_by_type
[docs] def prepare_step(self, tool_dependency, action_type, action_elem, action_dict, install_environment, is_binary_download): """ Prepare the recipe step for later execution. This generally alters the received action_dict with new information needed during this step's execution. """ if action_elem is not None: step_handler = self.get_step_handler_by_type(action_type) action_dict = step_handler.prepare_step(tool_dependency=tool_dependency, action_elem=action_elem, action_dict=action_dict, install_environment=install_environment, is_binary_download=is_binary_download) return action_dict
[docs]class TagManager(object):
[docs] def __init__(self, app): self.app = app self.tag_handlers = self.load_tag_handlers()
[docs] def get_tag_handler_by_tag(self, tag): return self.tag_handlers.get(tag, None)
[docs] def process_tag_set(self, tool_shed_repository, tool_dependency, package_elem, package_name, package_version, from_tool_migration_manager=False, tool_dependency_db_records=None): tag_handler = self.get_tag_handler_by_tag(package_elem.tag) tool_dependency, proceed_with_install, action_elem_tuples = \ tag_handler.process_tag_set(tool_shed_repository, tool_dependency, package_elem, package_name, package_version, from_tool_migration_manager=from_tool_migration_manager, tool_dependency_db_records=tool_dependency_db_records) return tool_dependency, proceed_with_install, action_elem_tuples
[docs] def load_tag_handlers(self): tag_handlers = dict(environment_variable=tag_handler.SetEnvironment(self.app), install=tag_handler.Install(self.app), package=tag_handler.Package(self.app), readme=tag_handler.ReadMe(self.app), repository=tag_handler.Repository(self.app), set_environment=tag_handler.SetEnvironment(self.app)) return tag_handlers