aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--interfaces/email/interactive/_procmailrc4
-rwxr-xr-xinterfaces/email/interactive/be-handle-mail32
2 files changed, 20 insertions, 16 deletions
diff --git a/interfaces/email/interactive/_procmailrc b/interfaces/email/interactive/_procmailrc
index c7daa1e..d42c0cf 100644
--- a/interfaces/email/interactive/_procmailrc
+++ b/interfaces/email/interactive/_procmailrc
@@ -13,8 +13,8 @@ LOGFILE=$MAILDIR/procmail.log
# Grab all incoming bug emails (but not replies). This rule eats
# matching emails (i.e. no further procmail processing).
:0
-* ^Subject: [be-bug
-* !^Subject:.*[be-bug].*Re:
+* ^Subject: \[be-bug
+* !^Subject:.*\[be-bug].*Re:
| be-handle-mail
# Drop everything else
diff --git a/interfaces/email/interactive/be-handle-mail b/interfaces/email/interactive/be-handle-mail
index d491a74..5120f94 100755
--- a/interfaces/email/interactive/be-handle-mail
+++ b/interfaces/email/interactive/be-handle-mail
@@ -310,12 +310,12 @@ class DiffTree (libbe.diff.DiffTree):
self.data_mime_part = None
if data_part != None:
self.data_mime_part = send_pgp_mime.encodedMIMEText(data_part)
- if parent != None and parent.name in ["new", "rem", "mod"]:
+ if parent != None and parent.name in [u"new", u"rem", u"mod"]:
self.attach_child_text = True
if data_part == None: # make blank data_mime_part for children's appends
- self.data_mime_part = send_pgp_mime.encodedMIMEText("")
+ self.data_mime_part = send_pgp_mime.encodedMIMEText(u"")
if self.data_mime_part != None:
- self.data_mime_part["Content-Description"] = self.name
+ self.data_mime_part[u"Content-Description"] = self.name
root.attach(self.data_mime_part)
def data_part(self, depth, indent=False):
return libbe.diff.DiffTree.data_part(self, depth, indent=indent)
@@ -547,7 +547,7 @@ class Message (object):
self.commit_command = Command(self, "commit", [subject])
self.commit_command.run()
if LOGFILE != None:
- LOGFILE.write("Autocommit:\n%s\n\n" %
+ LOGFILE.write(u"Autocommit:\n%s\n\n" %
send_pgp_mime.flatten(self.commit_command.response_msg(),
to_unicode=True))
def _begin_response(self):
@@ -577,7 +577,8 @@ class Message (object):
if previous_revision == None:
if AUTOCOMMIT != True: # no way to tell what's changed
raise NotificationFailed("Autocommit dissabled")
- assert len(self._response_messages) > 0
+ if len(self._response_messages) == 0:
+ raise NotificationFailed("Initial email failed.")
if self.commit_command.ret != 0:
# commit failed. Error already logged.
raise NotificationFailed("Commit failed")
@@ -626,11 +627,12 @@ class Message (object):
root = parts[0]
else: # join subscription parts into a single body
root = MIMEMultipart()
+ root[u"Content-Description"] = u"Multiple subscription trees."
for part in parts:
root.attach(part)
emails.append(send_pgp_mime.attach_root(header, root))
if LOGFILE != None:
- LOGFILE.write("Preparing to notify %s of changes\n" % subscriber)
+ LOGFILE.write(u"Preparing to notify %s of changes\n" % subscriber)
return emails
def _get_before_and_after_bugdirs(self, bd, previous_revision=None):
if previous_revision == None:
@@ -714,7 +716,7 @@ def test():
num_bad = num_errors + num_failures
return num_bad
-def main():
+def main(args):
from optparse import OptionParser
global AUTOCOMMIT, BE_DIR
@@ -741,7 +743,8 @@ def main():
parser.add_option('--test', dest='test', action='store_true',
help='Run internal unit-tests and exit.')
- options,args = parser.parse_args()
+ pargs = args
+ options,args = parser.parse_args(args[1:])
if options.test == True:
num_bad = test()
@@ -751,12 +754,16 @@ def main():
BE_DIR = options.be_dir
AUTOCOMMIT = options.autocommit
+
+ if options.notify_since == None:
+ msg_text = sys.stdin.read()
+
+ libbe.encoding.set_IO_stream_encodings(ENCODING) # _after_ reading message
+ open_logfile(options.logfile)
generate_global_tags(options.tag_base)
if options.notify_since != None:
if options.subscribers == True:
- libbe.encoding.set_IO_stream_encodings(ENCODING)
- open_logfile(options.logfile)
if LOGFILE != None:
LOGFILE.write(u"Checking for subscribers to notify since revision %s\n"
% options.notify_since)
@@ -775,9 +782,6 @@ def main():
close_logfile()
sys.exit(0)
- msg_text = sys.stdin.read()
- libbe.encoding.set_IO_stream_encodings(ENCODING) # _after_ reading message
- open_logfile(options.logfile)
if len(msg_text.strip()) == 0: # blank email!?
if LOGFILE != None:
LOGFILE.write(u"Blank email!\n")
@@ -875,4 +879,4 @@ class GenerateGlobalTagsTestCase (unittest.TestCase):
self.failUnlessEqual(m.group(1), u"xyz-123")
if __name__ == "__main__":
- main()
+ main(sys.argv)