From: jamesbunton Date: Tue, 25 Apr 2006 10:20:13 +0000 (+0000) Subject: Added SVN version number to result from jabber:iq:version requests. X-Git-Url: https://code.delx.au/pymsnt/commitdiff_plain/cbe38882237ba2dff9191c266ddc04a5e78ebba4 Added SVN version number to result from jabber:iq:version requests. git-svn-id: http://delx.cjb.net/svn/pymsnt/trunk@144 55fbd22a-6204-0410-b2f0-b6c764c7e90a committer: jamesbunton --- diff --git a/src/main.py b/src/main.py index 4b4d906..6be4c74 100644 --- a/src/main.py +++ b/src/main.py @@ -96,6 +96,7 @@ from tlib.xmlw import Element, jid, component from debug import LogEvent, INFO, WARN, ERROR import debug +import svninfo import utils import xdb import avatar @@ -114,6 +115,10 @@ import housekeep class PyTransport(component.Service): def __init__(self): LogEvent(INFO) + try: + LogEvent(INFO, msg="SVN r" + svninfo.getSVNVersion()) + except: + pass # Discovery, as well as some builtin features self.discovery = disco.ServerDiscovery(self) diff --git a/src/misciq.py b/src/misciq.py index 66f87b9..64cbe90 100644 --- a/src/misciq.py +++ b/src/misciq.py @@ -5,6 +5,7 @@ import utils from twisted.internet import reactor, task, protocol, error from tlib.xmlw import Element, jid from debug import LogEvent, INFO, WARN, ERROR +import svninfo import jabw import legacy import disco @@ -431,6 +432,11 @@ class VersionTeller: self.pytrans = pytrans self.pytrans.discovery.addFeature(disco.IQVERSION, self.incomingIq, config.jid) self.pytrans.discovery.addFeature(disco.IQVERSION, self.incomingIq, "USER") + try: + self.version = "%s - SVN r%s" % (legacy.version, svninfo.getSVNVersion()) + except: + self.version = legacy.version + self.os = "Python" + ".".join([str(x) for x in sys.version_info[0:3]]) + " - " + sys.platform def incomingIq(self, el): eltype = el.getAttribute("type") @@ -451,9 +457,9 @@ class VersionTeller: name = query.addElement("name") name.addContent(config.discoName) version = query.addElement("version") - version.addContent(legacy.version) + version.addContent(self.version) os = query.addElement("os") - os.addContent("Python" + ".".join([str(x) for x in sys.version_info[0:3]]) + " - " + sys.platform) + os.addContent(self.os) self.pytrans.send(iq) diff --git a/src/svninfo.py b/src/svninfo.py new file mode 100644 index 0000000..e1871eb --- /dev/null +++ b/src/svninfo.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + +from tlib.xmlw import parseFile + +import os, os.path + +class SVNVersion: + def __init__(self): + self.version = 0 + + def calcRevision(self, svndir): + entriesFile = os.path.join(svndir, "entries") + doc = parseFile(entriesFile) + for child in doc.elements(): + try: + num = int(child.getAttribute("committed-rev")) + self.version = max(num, self.version) + except TypeError: + pass + + def traverseDir(self, dirname): + for file in os.listdir(dirname): + if os.path.islink(file): + continue + if os.path.isdir(file): + path = os.path.join(dirname, file) + if file == ".svn": + self.calcRevision(path) + else: + self.traverseDir(path) + +def getSVNVersion(dirname="."): + x = SVNVersion() + x.traverseDir(dirname) + return x.version + +if __name__ == "__main__": + print getSVNVersion() +