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.util.container_util
from __future__ import print_function
import logging
from tool_shed.util import common_util
log = logging.getLogger(__name__)
# String separator
STRSEP = '__ESEP__'
[docs]def generate_repository_dependencies_key_for_repository(toolshed_base_url, repository_name, repository_owner,
changeset_revision, prior_installation_required,
only_if_compiling_contained_td):
"""
Assumes tool shed is current tool shed since repository dependencies across tool sheds
is not yet supported.
"""
# The tool_shed portion of the key must be the value that is stored in the tool_shed_repository.tool_shed column
# of the Galaxy database for an installed repository. This value does not include the protocol, but does include
# the port if there is one.
tool_shed = common_util.remove_protocol_from_tool_shed_url(toolshed_base_url)
return '%s%s%s%s%s%s%s%s%s%s%s' % (tool_shed,
STRSEP,
str(repository_name),
STRSEP,
str(repository_owner),
STRSEP,
str(changeset_revision),
STRSEP,
str(prior_installation_required),
STRSEP,
str(only_if_compiling_contained_td))
[docs]def get_components_from_key(key):
"""
Assumes tool shed is current tool shed since repository dependencies across tool sheds is not
yet supported.
"""
items = key.split(STRSEP)
toolshed_base_url = items[0]
repository_name = items[1]
repository_owner = items[2]
changeset_revision = items[3]
if len(items) == 5:
prior_installation_required = items[4]
return toolshed_base_url, repository_name, repository_owner, changeset_revision, prior_installation_required
elif len(items) == 6:
prior_installation_required = items[4]
only_if_compiling_contained_td = items[5]
return toolshed_base_url, repository_name, repository_owner, \
changeset_revision, prior_installation_required, \
only_if_compiling_contained_td
else:
# For backward compatibility to the 12/20/12 Galaxy release we have to return the following, and callers
# must handle exceptions.
return toolshed_base_url, repository_name, repository_owner, changeset_revision
[docs]def print_folders(pad, folder):
# For debugging...
pad_str = ''
for i in range(1, pad):
pad_str += ' '
print('%sid: %s key: %s' % (pad_str, str(folder.id), folder.key))
for repository_dependency in folder.repository_dependencies:
print(' %s%s' % (pad_str, repository_dependency.listify))
for sub_folder in folder.folders:
print_folders(pad + 5, sub_folder)