]> 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
 from debug import LogEvent, INFO, WARN, ERROR
 
 import debug
+import svninfo
 import utils
 import xdb
 import avatar
 import utils
 import xdb
 import avatar
@@ -114,6 +115,10 @@ import housekeep
 class PyTransport(component.Service):
        def __init__(self):
                LogEvent(INFO)
 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)
 
                # 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
 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
 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")
                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")
        
        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")
                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 = 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)
 
                
                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()
+