rev 3563 - scripts
Pierre Habouzit
madcoder at costa.debian.org
Mon Apr 17 14:12:08 UTC 2006
Author: madcoder
Date: 2006-04-17 14:12:07 +0000 (Mon, 17 Apr 2006)
New Revision: 3563
Added:
scripts/bzlink.py
Log:
preliminary work on a Bugzilla <=> debbugs cheap linker
Added: scripts/bzlink.py
===================================================================
--- scripts/bzlink.py 2006-04-16 20:38:15 UTC (rev 3562)
+++ scripts/bzlink.py 2006-04-17 14:12:07 UTC (rev 3563)
@@ -0,0 +1,72 @@
+#! /usr/bin/env python
+
+import sys, re, os, email
+
+class InvalidBzMsg(Exception):
+ def __init__(self, reason):
+ self.args = (reason)
+
+class BzMsg:
+ _blocksRegex = re.compile(r"(^-------[^\n]*-------)\n", re.MULTILINE)
+
+ def __init__(self, fp):
+ self.msg = email.message_from_file(fp)
+ fp.close()
+
+ self.bug = -1
+ self.blocks = {}
+ self.additional = None
+
+ self._parse()
+
+ def _parse(self):
+ if 'x-bugzilla-url' not in self.msg:
+ raise InvalidBzMsg("Missing Bugzilla URL")
+
+ self.bug = self._findBugNumber()
+
+ if self.msg.is_multipart():
+ raise InvalidBzMsg("Cannot deal with multipart messages")
+
+ self._parsePayload()
+
+ def _findBugNumber(self):
+ if 'reply-to' in self.msg:
+ nb = self.msg['reply-to'].split('@')[0]
+ try:
+ return int(nb)
+ except:
+ pass
+
+ if 'subject' in self.msg:
+ m = re.compile(r"^\[Bug (\d*)\] ").match(self.msg['subject'])
+ if m:
+ return int(m.group(1))
+
+ raise InvalidBzMsg("Cannot guess bug number")
+
+ def _parsePayload(self, stripsig = True):
+ payload = self.msg.get_payload()
+
+ if stripsig:
+ where = payload.rfind("\n-- \n")
+ if where >= 0:
+ payload = payload[:where+1]
+
+ tmp = BzMsg._blocksRegex.split(payload)[1:]
+ for i in xrange(0, len(tmp) / 2):
+ self.blocks[tmp[2*i]] = tmp[2*i+1]
+
+ for k, v in self.blocks.iteritems():
+ if k == "------- You are receiving this mail because: -------":
+ self._parseBzChanges(v)
+ if k.startswith("------- Additional Comments From"):
+ self.additional = "%s\n\n%s" % (k, v)
+
+ def _parseBzChanges(self, s):
+ pass
+
+
+bzm = BzMsg(sys.stdin)
+print "Bug Number: #%i\n" % (bzm.bug)
+print bzm.additional
Property changes on: scripts/bzlink.py
___________________________________________________________________
Name: svn:executable
+ *
More information about the pkg-kde-commits
mailing list