]> code.delx.au - pymsnt/commitdiff
Added SVN version number to result from jabber:iq:version requests.
authorjamesbunton <jamesbunton@55fbd22a-6204-0410-b2f0-b6c764c7e90a>
Tue, 25 Apr 2006 10:20:13 +0000 (10:20 +0000)
committerjamesbunton <jamesbunton@55fbd22a-6204-0410-b2f0-b6c764c7e90a>
Tue, 25 Apr 2006 10:20:13 +0000 (10:20 +0000)
git-svn-id: http://delx.cjb.net/svn/pymsnt/trunk@144 55fbd22a-6204-0410-b2f0-b6c764c7e90a

committer: jamesbunton <jamesbunton@55fbd22a-6204-0410-b2f0-b6c764c7e90a>

src/main.py
src/misciq.py
src/svninfo.py [new file with mode: 0644]

index 4b4d906022860449743b86ee76ba46884a9418f9..6be4c742b811403765ba08a646d28df013c6f307 100644 (file)
@@ -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)
index 66f87b95903d9849424b1f9f2fa5db3d99eb2dce..64cbe90bc150754eae1e54cff76b2efe21935146 100644 (file)
@@ -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 (file)
index 0000000..e1871eb
--- /dev/null
@@ -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()
+