Add "name <email>" parsing for simpler commands
authorCatalin Marinas <catalin.marinas@gmail.com>
Thu, 14 Jul 2005 09:48:36 +0000 (10:48 +0100)
committerCatalin Marinas <catalin.marinas@gmail.com>
Thu, 14 Jul 2005 09:48:36 +0000 (10:48 +0100)
Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
stgit/commands/common.py
stgit/commands/new.py
stgit/commands/refresh.py

index d18b0b2..160dd37 100644 (file)
@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-import sys, os
+import sys, os, re
 from optparse import OptionParser, make_option
 
 from stgit.utils import *
@@ -116,3 +116,13 @@ def resolved_all():
         for filename in conflicts:
             resolved(filename)
         os.remove(os.path.join(git.base_dir, 'conflicts'))
+
+def name_email(string):
+    """Return a tuple consisting of the name and email parsed from a
+    standard 'name <email>' string
+    """
+    names = re.split('([^<>]*)<([^<>]*)>', string)
+    if len(names) != 4:
+        raise CmdException, 'Incorrect "name <email>" string: %s' % string
+
+    return tuple([names[1].strip(), names[2].strip()])
index 1779d9c..c018195 100644 (file)
@@ -29,6 +29,8 @@ usage = '%prog [options] <name>'
 
 options = [make_option('-m', '--message',
                        help = 'use MESSAGE as the patch description'),
+           make_option('-a', '--author', metavar = '"NAME <EMAIL>"',
+                       help = 'use "NAME <EMAIL>" as the author details'),
            make_option('--authname',
                        help = 'use AUTHNAME as the author name'),
            make_option('--authemail',
@@ -51,6 +53,9 @@ def func(parser, options, args):
     check_conflicts()
     check_head_top_equal()
 
+    if options.author:
+        options.authname, options.authemail = name_email(options.author)
+
     crt_series.new_patch(args[0], message = options.message,
                          author_name = options.authname,
                          author_email = options.authemail,
index 81e3066..46a7ea2 100644 (file)
@@ -39,6 +39,8 @@ options = [make_option('-f', '--force',
            make_option('-m', '--message',
                        help = 'use MESSAGE as the patch ' \
                        'description'),
+           make_option('-a', '--author', metavar = '"NAME <EMAIL>"',
+                       help = 'use "NAME <EMAIL>" as the author details'),
            make_option('--authname',
                        help = 'use AUTHNAME as the author name'),
            make_option('--authemail',
@@ -71,6 +73,9 @@ def func(parser, options, args):
     if not options.force:
         check_head_top_equal()
 
+    if options.author:
+        options.authname, options.authemail = name_email(options.author)
+
     if git.local_changes() \
            or not crt_series.head_top_equal() \
            or options.edit or options.message \