aboutsummaryrefslogtreecommitdiffstats
path: root/interfaces/email/interactive/be-handle-mail
diff options
context:
space:
mode:
authorW. Trevor King <wking@drexel.edu>2009-07-20 14:30:40 -0400
committerW. Trevor King <wking@drexel.edu>2009-07-20 14:30:40 -0400
commita408bd6c1d631ef4c1271b8d9574e4171ae85d2b (patch)
tree14c570fd36c105bd5b85dea93a9e26a947c316bb /interfaces/email/interactive/be-handle-mail
parent6c8a35eef432e041e3e6e224405b189f3557e635 (diff)
downloadbugseverywhere-a408bd6c1d631ef4c1271b8d9574e4171ae85d2b.tar.gz
Added psuedo-header handling to be-handle-mail.
Many psuedo-headers had been ignored. Now they are all implemented. Getting this working exposed a few bugs in error message generation for Commands with IDs in their argument list. These bugs should now be fixed.
Diffstat (limited to 'interfaces/email/interactive/be-handle-mail')
-rwxr-xr-xinterfaces/email/interactive/be-handle-mail20
1 files changed, 17 insertions, 3 deletions
diff --git a/interfaces/email/interactive/be-handle-mail b/interfaces/email/interactive/be-handle-mail
index a82f723..d1c9451 100755
--- a/interfaces/email/interactive/be-handle-mail
+++ b/interfaces/email/interactive/be-handle-mail
@@ -143,6 +143,8 @@ class ID (object):
def __init__(self, command):
self.command = command
def extract_id(self):
+ if hasattr(self, "cached_id"):
+ return self.cached_id
assert self.command.ret == 0, self.command.ret
if self.command.command == u"new":
regexp = re.compile(u"Created bug with ID (.*)")
@@ -150,7 +152,12 @@ class ID (object):
raise NotImplementedError, self.command.command
match = regexp.match(self.command.stdout)
assert len(match.groups()) == 1, str(match.groups())
- return match.group(1)
+ self.cached_id = match.group(1)
+ return self.cached_id
+ def __str__(self):
+ if self.command.ret != 0:
+ return "<id for %s>" % repr(self.command)
+ return "<id %s>" % self.extract_id()
class Command (object):
"""
@@ -178,7 +185,7 @@ class Command (object):
self.stderr = None
self.err = None
def __str__(self):
- return "<command: %s %s>" % (self.command, " ".join(self.args))
+ return "<command: %s %s>" % (self.command, " ".join([str(s) for s in self.args]))
def normalize_args(self):
"""
Expand any ID placeholders in self.args.
@@ -409,15 +416,22 @@ class Message (object):
args.append(summary)
commands.append(Command(self, command, args))
comment_body = self._strip_footer(comment_body)
+ id = ID(commands[0])
if len(comment_body) > 0:
command = u"comment"
comment = u"Version: %s\n\n"%options[u"Version"] + comment_body
args = [u"--author", self.author_addr(),
u"--alt-id", self.message_id(),
u"--content-type", mime_type]
- args.append(ID(commands[0]))
+ args.append(id)
args.append(u"-")
commands.append(Command(self, u"comment", args, stdin=comment))
+ for key,value in options.items():
+ if key in [u"Version", u"Reporter"]:
+ continue # we've already handled this option
+ command = key.lower()
+ args = [id, value]
+ commands.append(Command(self, command, args))
elif tag_type == u"comment":
command = u"comment"
bug_id = value