# vim: set filencoding=utf8 """ Subversion Info @author: Mike Crute (mcrute@ag.com) @organization: SoftGroup Interactive, Inc. @date: April 20, 2010 """ import os from xml.dom import pulldom from obalie.utils import join_url from obalie.commands import BaseCommand class RepositoryInfo(object): def __init__(self, path=None, root=None, uuid=None, revision=None): self.path = path self.root = root self.uuid = uuid self.revision = revision @property def relative_path(self): return self.path[len(self.root):] class InfoCommand(BaseCommand): def __call__(self, path='/'): path = join_url(self.client.repo_url, path) self.logger.info('Running info for path: %s', path) repo_info = RepositoryInfo() xml = self.client.get_xml_output('info', path) for event, node in xml: if event != pulldom.START_ELEMENT: continue if node.tagName in ('url', 'root', 'uuid'): xml.expandNode(node) if node.tagName == 'url': repo_info.path = node.firstChild.data elif node.tagName == 'root': repo_info.root = node.firstChild.data elif node.tagName == 'uuid': repo_info.uuid = node.firstChild.data return repo_info