Use shlex.split() to parse control lines in be-handle-mail.
authorW. Trevor King <wking@drexel.edu>
Mon, 20 Jul 2009 21:37:31 +0000 (17:37 -0400)
committerW. Trevor King <wking@drexel.edu>
Mon, 20 Jul 2009 21:37:31 +0000 (17:37 -0400)
Split arguments following POSIX rather than at all whitespace.

interfaces/email/interactive/README
interfaces/email/interactive/be-handle-mail
interfaces/email/interactive/examples/failing_multiples

index 87959e6f53be2f8dbfdd4aa096f4bc010d871051..8954383258cf2d6e6dc28fd62a069f7bb9b33653 100644 (file)
@@ -86,12 +86,10 @@ Controlling bugs
 
 This interface consists of a list of allowed be commands, with one
 command per line.  Blank lines and lines beginning with '#' are
-ignored, as well anything following a line starting with '--'.  All the
-listed commands are executed in order and their output returned.
-Note that currently arguments are split on spaces, so
-  "John Doe" -> ['"John', 'Doe"']
-I'm thinking about how to fix this, but for the time being it's best
-to avoid spaces.
+ignored, as well anything following a line starting with '--'.  All
+the listed commands are executed in order and their output returned.
+The commands are split into arguments with the POSIX-compliant
+shlex.split().
 
     From jdoe@example.com Fri Apr 18 12:00:00 2008
     From: John Doe <jdoe@example.com>
@@ -100,7 +98,7 @@ to avoid spaces.
     Content-Transfer-Encoding: 8bit
     Subject: [be-bug] I'll handle XYZ by release 1.2.3
     
-    assign XYZ John
+    assign XYZ "John Doe <jdoe@example.com>"
     status XYZ assigned
     severity XYZ critical
     target XYZ 1.2.3
index d1c9451ef0c71f763934afe9849e9fc1ea3c6ff2..f457b6a6736167bf54bd3e2c77f94262f0e975d5 100755 (executable)
@@ -42,17 +42,19 @@ import cStringIO as StringIO
 import email
 from email.mime.multipart import MIMEMultipart
 import email.utils
-import libbe.cmdutil, libbe.encoding, libbe.utility
 import os
 import os.path
 import re
-import send_pgp_mime
+import shlex
 import sys
 import time
 import traceback
 import doctest
 import unittest
 
+import libbe.cmdutil, libbe.encoding, libbe.utility
+import send_pgp_mime
+
 HANDLER_ADDRESS = u"BE Bugs <wking@thor.physics.drexel.edu>"
 _THIS_DIR = os.path.abspath(os.path.dirname(__file__))
 BE_DIR = _THIS_DIR
@@ -452,7 +454,7 @@ class Message (object):
                     continue
                 if line.startswith(BREAK):
                     break
-                fields = line.split()
+                fields = shlex.split(line)
                 command,args = (fields[0], fields[1:])
                 commands.append(Command(self, command, args))
             if len(commands) == 0:
index ebe54068037e610d14dd04d77fc0ad9c789d73a5..cf50211ad16d0218d313050c436655682f794c3a 100644 (file)
@@ -1,4 +1,4 @@
-From jdoe@example.com Fri Apr 18 11:18:58 2008
+From jdoe@example.com Fri Apr 18 12:00:00 2008
 Message-ID: <abcd@example.com>
 Date: Fri, 18 Apr 2008 12:00:00 +0000
 From: John Doe <jdoe@example.com>
@@ -6,13 +6,11 @@ Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 Subject: [be-bug] Commit message...
 
-new "test_bug"
-new "test_bug_2"
+new "test bug"
+new "test bug 2"
 failing-command
-new "test_bug_3"
+new "test bug 3"
 
 --
 This message fails partway through, but the partial changes should be
 recorded in a commit...
-
-Note the lack of spaces in the bug summary strings.