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 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 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