summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/irc-channel/supybot-SunriseCIA-plugin/plugin.py')
-rw-r--r--scripts/irc-channel/supybot-SunriseCIA-plugin/plugin.py111
1 files changed, 111 insertions, 0 deletions
diff --git a/scripts/irc-channel/supybot-SunriseCIA-plugin/plugin.py b/scripts/irc-channel/supybot-SunriseCIA-plugin/plugin.py
new file mode 100644
index 000000000..bd5749606
--- /dev/null
+++ b/scripts/irc-channel/supybot-SunriseCIA-plugin/plugin.py
@@ -0,0 +1,111 @@
+###
+# Copyright (c) 2006, Markus Ullmann
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the author of this software nor the name of
+# contributors to this software may be used to endorse or promote products
+# derived from this software without specific prior written consent.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+###
+
+import threading
+import time
+
+import supybot.utils as utils
+from supybot.commands import *
+import supybot.ircmsgs as ircmsgs
+import supybot.plugins as plugins
+import supybot.ircutils as ircutils
+import supybot.callbacks as callbacks
+import SunriseCIAParser
+import os
+
+DIRCHECK="/var/www/sunrise.gentooexperimental.org/commitwatch"
+ANNOUNCEINCHANNEL="#gentoo-sunrise"
+
+class SunriseCIA(callbacks.Plugin):
+ """Add the help for "@plugin help SunriseCIA" here
+ This should describe *how* to use this plugin."""
+ threaded = True
+
+ def __init__(self, irc):
+ self.__parent = super(SunriseCIA,self)
+ self.__parent.__init__(irc)
+ self.filelist = []
+ self.watchactive = 0
+
+ def parsestart(self, irc, msg, args):
+ if self.watchactive == 0:
+ self.watchactive = 1
+ self.t = threading.Thread(target=self.Parseit, name="ParserWatcher",args=(irc,msg,args))
+ self.t.setDaemon(True)
+ self.t.start()
+
+ parsestart = wrap(parsestart, [('checkCapability', ANNOUNCEINCHANNEL+',op')])
+
+ def parsestop(self,irc,msg,args):
+ self.watchactive = 0
+
+ parsestop = wrap(parsestop, [('checkCapability', ANNOUNCEINCHANNEL+',op')])
+
+ def parsestatus(self, irc, msg, args):
+ if self.watchactive == 1 and self.t.isAlive():
+ irc.reply("SunriseCIA CommitWatch active")
+ else:
+ irc.reply("SunriseCIA CommitWatch disabled")
+
+ parsestatus = wrap(parsestatus)
+
+ def GetFileList(self):
+ for root, dirs, files in os.walk(DIRCHECK):
+ for name in files:
+ self.filelist.append(os.path.join(root,name))
+
+ def Parseit(self, irc, msg, args):
+ #irc.queueMsg(ircmsgs.privmsg(ANNOUNCEINCHANNEL,"SunriseCIA CommitWatch started"))
+ while(self.watchactive):
+ self.GetFileList()
+ if len(self.filelist) > 0:
+ while (1):
+ try:
+ file = self.filelist.pop()
+ except:
+ break;
+ self.log.debug("Found new file: %s",file)
+ parser = SunriseCIAParser.CommitParser( )
+ parser.filename = file
+ parser.doit()
+ tempstr = parser.logmessage.strip()
+ temppos = tempstr.find(":")
+ if temppos > 0:
+ tempstr = tempstr[(tempstr.find(":")+1):].strip()
+ s = "3%s * 10r%s %s: %s < %s >" % (parser.author,parser.revision,parser.pathline,tempstr,"http://gentoo-sunrise.org/cgi-bin/trac.cgi/changeset/" + parser.revision)
+ irc.queueMsg(ircmsgs.privmsg(ANNOUNCEINCHANNEL,s))
+ os.remove(file)
+ time.sleep(2)
+ #irc.queueMsg(ircmsgs.privmsg(ANNOUNCEINCHANNEL,"SunriseCIA CommitWatch stopped"))
+
+Class = SunriseCIA
+
+
+# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: