chiark / gitweb /
Add --ack/--sign options to "stg new"
[stgit] / stgit / commands / new.py
CommitLineData
fcee87cf
CM
1
2__copyright__ = """
3Copyright (C) 2005, Catalin Marinas <catalin.marinas@gmail.com>
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU General Public License version 2 as
7published by the Free Software Foundation.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program; if not, write to the Free Software
16Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17"""
18
19import sys, os
20from optparse import OptionParser, make_option
21
22from stgit.commands.common import *
23from stgit.utils import *
24from stgit import stack, git
25
26
27help = 'create a new patch and make it the topmost one'
9060d420 28usage = """%prog [options] [name]
26aab5b0
CM
29
30Create a new, empty patch and make it the topmost one. If the
31'--message' option is not passed, an editor is invoked with the
1f3bb017
CM
32.git/patchdescr.tmpl, ~/.stgit/templates/patchdescr.tmpl or
33/usr/share/stgit/templates/patchdescr.tmpl file used a as template,
34together with generated lines. By default, the local changes in the
35working tree are not included in the patch. A 'refresh' command is
9060d420
KH
36needed for this.
37
38If no name is given for the new patch, one is generated from the first
39line of the commit message."""
fcee87cf
CM
40
41options = [make_option('-m', '--message',
42 help = 'use MESSAGE as the patch description'),
6ad48e48
PBG
43 make_option('-s', '--showpatch',
44 help = 'show the patch content in the editor buffer',
45 action = 'store_true'),
19cd0a8f
CM
46 make_option('-a', '--author', metavar = '"NAME <EMAIL>"',
47 help = 'use "NAME <EMAIL>" as the author details'),
fcee87cf
CM
48 make_option('--authname',
49 help = 'use AUTHNAME as the author name'),
50 make_option('--authemail',
51 help = 'use AUTHEMAIL as the author e-mail'),
52 make_option('--authdate',
53 help = 'use AUTHDATE as the author date'),
54 make_option('--commname',
55 help = 'use COMMNAME as the committer name'),
56 make_option('--commemail',
f3684678
KH
57 help = 'use COMMEMAIL as the committer e-mail')
58 ] + make_sign_options()
fcee87cf
CM
59
60
61def func(parser, options, args):
62 """Creates a new patch
63 """
9060d420
KH
64 if len(args) == 0:
65 name = None # autogenerate a name
66 elif len(args) == 1:
67 name = args[0]
68 else:
fcee87cf
CM
69 parser.error('incorrect number of arguments')
70
3bd6274e
CM
71 check_conflicts()
72 check_head_top_equal()
fcee87cf 73
19cd0a8f
CM
74 if options.author:
75 options.authname, options.authemail = name_email(options.author)
76
9060d420 77 crt_series.new_patch(name, message = options.message,
6ad48e48 78 show_patch = options.showpatch,
fcee87cf
CM
79 author_name = options.authname,
80 author_email = options.authemail,
81 author_date = options.authdate,
82 committer_name = options.commname,
f3684678
KH
83 committer_email = options.commemail,
84 sign_str = options.sign_str)