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