(Steve Dougherty)
2013-07-08: Initial version of parsing VCS message subjects. Initial version of parsing VCS message subjects.
diff --git a/infocalypse/wot.py b/infocalypse/wot.py
--- a/infocalypse/wot.py
+++ b/infocalypse/wot.py
@@ -14,7 +14,7 @@ import imaplib
FREEMAIL_SMTP_PORT = 4025
FREEMAIL_IMAP_PORT = 4143
-PULL_REQUEST_PREFIX = "[vcs] "
+VCS_PREFIX = "[vcs] "
def send_pull_request(ui, repo, from_identifier, to_identifier, to_repo_name):
@@ -64,7 +64,7 @@ HG: Below is the machine-readable footer
HG: or putting things below it has the potential to cause problems.
{1}
-""".format(PULL_REQUEST_PREFIX, footer), from_identifier)
+""".format(VCS_PREFIX, footer), from_identifier)
# TODO: Abort in the case of a blank message?
# Markdown support would be on receiving end. Maybe CLI preview eventually.
# (Would that even work?)
@@ -74,7 +74,7 @@ HG: or putting things below it has the p
# Body is third line and after.
msg = MIMEText('\n'.join(source_lines[2:]))
- msg['Subject'] = PULL_REQUEST_PREFIX + source_lines[0]
+ msg['Subject'] = VCS_PREFIX + source_lines[0]
msg['To'] = to_address
msg['From'] = from_address
@@ -104,12 +104,9 @@ def check_notifications(ui, from_identit
imap.login(address, cfg.get_freemail_password(local_identity['Identity']))
imap.select()
- # This should be PULL_REQUEST_PREFIX instead of hardcoded, but brackets /
- # space makes it quoted. http://bugs.python.org/issue917120 The workaround
- # is parenthesis, but Freemail does not support searching with them.
- # Therefore search for part of it, then fetch matching subjects and check
- # for the full prefix.
- reply_type, message_numbers = imap.search(None, 'SUBJECT', "vcs")
+ # Parenthesis to work around erroneous quotes:
+ # http://bugs.python.org/issue917120
+ reply_type, message_numbers = imap.search(None, '(SUBJECT %s)' % VCS_PREFIX)
# fetch() expects strings for both. Individual message numbers are
# separated by commas. It seems desirable to peek because it's not yet
@@ -128,12 +125,15 @@ def check_notifications(ui, from_identit
# Exclude closing parens, which are of length one.
subjects = filter(lambda x: len(x) == 2, subjects)
- subjects = map(lambda x: x[1], subjects)
+ subjects = [x[1] for x in subjects]
+
+ # Remove field name and trim whitespace.
+ subjects = [subject.rstrip()[subject.index(VCS_PREFIX):] for subject in
+ subjects]
for subject in subjects:
- print subject
- #if subject.startswith(PULL_REQUEST_PREFIX):
- #print "Found %s!" % subject
+ if subject.startswith(VCS_PREFIX):
+ print "Found VCS email '%s'" % subject
def update_repo_listing(ui, for_identity):