mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
71 lines
3.1 KiB
Python
71 lines
3.1 KiB
Python
import logging
|
|
import os
|
|
|
|
from tool_shed.util import common_util
|
|
|
|
log = logging.getLogger( __name__ )
|
|
|
|
# String separator
|
|
STRSEP = '__ESEP__'
|
|
|
|
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 ) )
|
|
|
|
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
|
|
|
|
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 )
|