from debug import LogEvent, INFO, WARN, ERROR
import debug
+import svninfo
import utils
import xdb
import avatar
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)
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
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")
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)
--- /dev/null
+#!/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()
+