Warning
This document is for an old release 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