def get_repository_dependencies( self, app, changeset, toolshed_url ): # We aren't concerned with repositories of type tool_dependency_definition here if a # repository_metadata record is not returned because repositories of this type will never # have repository dependencies. However, if a readme file is uploaded, or some other change # is made that does not create a new downloadable changeset revision but updates the existing # one, we still want to be able to get repository dependencies. repository_metadata = metadata_util.get_current_repository_metadata_for_changeset_revision( app, self, changeset ) if repository_metadata: metadata = repository_metadata.metadata if metadata: rb = relation_builder.RelationBuilder( app, self, repository_metadata, toolshed_url ) repository_dependencies = rb.get_repository_dependencies_for_changeset_revision() if repository_dependencies: return repository_dependencies return None
def get_repository_dependencies(self, app, changeset, toolshed_url): # We aren't concerned with repositories of type tool_dependency_definition here if a # repository_metadata record is not returned because repositories of this type will never # have repository dependencies. However, if a readme file is uploaded, or some other change # is made that does not create a new downloadable changeset revision but updates the existing # one, we still want to be able to get repository dependencies. repository_metadata = metadata_util.get_current_repository_metadata_for_changeset_revision(app, self, changeset) if repository_metadata: metadata = repository_metadata.metadata if metadata: rb = relation_builder.RelationBuilder(app, self, repository_metadata, toolshed_url) repository_dependencies = rb.get_repository_dependencies_for_changeset_revision() if repository_dependencies: return repository_dependencies return None
def metadata(self, trans, id, **kwd): """ GET /api/repositories/{encoded_repository_id}/metadata Returns information about a repository in the Tool Shed. Example URL: http://localhost:9009/api/repositories/f9cad7b01a472135/metadata :param id: the encoded id of the Repository object :returns: A dictionary containing the specified repository's metadata, by changeset, recursively including dependencies and their metadata. :not found: Empty dictionary. """ try: trans.security.decode_id(id) except Exception: raise MalformedId("The given id is invalid.") recursive = util.asbool(kwd.get("recursive", "True")) all_metadata = {} repository = repository_util.get_repository_in_tool_shed(self.app, id) for changeset, changehash in repository.installable_revisions(self.app): metadata = metadata_util.get_current_repository_metadata_for_changeset_revision( self.app, repository, changehash ) if metadata is None: continue metadata_dict = metadata.to_dict( value_mapper={"id": self.app.security.encode_id, "repository_id": self.app.security.encode_id} ) metadata_dict["repository"] = repository.to_dict(value_mapper={"id": self.app.security.encode_id}) if metadata.has_repository_dependencies and recursive: metadata_dict["repository_dependencies"] = metadata_util.get_all_dependencies( self.app, metadata, processed_dependency_links=[] ) else: metadata_dict["repository_dependencies"] = [] if metadata.includes_tool_dependencies and recursive: metadata_dict["tool_dependencies"] = repository.get_tool_dependencies(self.app, changehash) else: metadata_dict["tool_dependencies"] = {} if metadata.includes_tools: metadata_dict["tools"] = metadata.metadata["tools"] all_metadata["%s:%s" % (int(changeset), changehash)] = metadata_dict return all_metadata