Index: git_cl.py |
diff --git a/git_cl.py b/git_cl.py |
index 44d4e28c657e26563c640c92e96ce264b9fd1c8d..487c9b3cb38f4acc922bde2b52347b39c6c47ef2 100755 |
--- a/git_cl.py |
+++ b/git_cl.py |
@@ -2604,6 +2604,22 @@ _CODEREVIEW_IMPLEMENTATIONS = { |
} |
+def _add_codereview_issue_select_options(parser, extra=""): |
+ _add_codereview_select_options(parser) |
+ |
+ text = ('Operate on this issue number instead of the current branch\'s ' |
+ 'implicit issue.') |
+ if extra: |
+ text += ' '+extra |
+ parser.add_option('-i', '--issue', type=int, help=text) |
+ |
+ |
+def _process_codereview_issue_select_options(parser, options): |
+ _process_codereview_select_options(parser, options) |
+ if options.issue is not None and not options.forced_codereview: |
+ parser.error('--issue must be specified with either --rietveld or --gerrit') |
+ |
+ |
def _add_codereview_select_options(parser): |
"""Appends --gerrit and --rietveld options to force specific codereview.""" |
parser.codereview_group = optparse.OptionGroup( |
@@ -3284,25 +3300,21 @@ def CMDstatus(parser, args): |
help='print only specific field (desc|id|patch|status|url)') |
parser.add_option('-f', '--fast', action='store_true', |
help='Do not retrieve review status') |
- parser.add_option('-i', '--issue', type=int, |
- help='Operate on this issue number instead of the current' |
- ' branch\'s implicit issue. Only valid with --field.') |
parser.add_option( |
'-j', '--maxjobs', action='store', type=int, |
help='The maximum number of jobs to use when retrieving review status') |
auth.add_auth_options(parser) |
- _add_codereview_select_options(parser) |
+ _add_codereview_issue_select_options( |
+ parser, 'Must be in conjunction with --field.') |
options, args = parser.parse_args(args) |
- _process_codereview_select_options(parser, options) |
+ _process_codereview_issue_select_options(parser, options) |
if args: |
parser.error('Unsupported args: %s' % args) |
auth_config = auth.extract_auth_config_from_options(options) |
- if options.issue is not None: |
- if not options.field or not options.forced_codereview: |
- parser.error('--issue may only be specified in conjunction with --field' |
- ' and either --rietveld or --gerrit') |
+ if options.issue is not None and not options.field: |
+ parser.error('--field must be specified with --issue') |
if options.field: |
cl = Changelist(auth_config=auth_config, issue=options.issue, |
@@ -4745,16 +4757,17 @@ def CMDset_commit(parser, args): |
parser.add_option('-c', '--clear', action='store_true', |
help='stop CQ run, if any') |
auth.add_auth_options(parser) |
- _add_codereview_select_options(parser) |
+ _add_codereview_issue_select_options(parser) |
options, args = parser.parse_args(args) |
- _process_codereview_select_options(parser, options) |
+ _process_codereview_issue_select_options(parser, options) |
auth_config = auth.extract_auth_config_from_options(options) |
if args: |
parser.error('Unrecognized args: %s' % ' '.join(args)) |
if options.dry_run and options.clear: |
parser.error('Make up your mind: both --dry-run and --clear not allowed') |
- cl = Changelist(auth_config=auth_config, codereview=options.forced_codereview) |
+ cl = Changelist(auth_config=auth_config, issue=options.issue, |
+ codereview=options.forced_codereview) |
if options.clear: |
state = _CQState.NONE |
elif options.dry_run: |
@@ -4769,12 +4782,15 @@ def CMDset_commit(parser, args): |
def CMDset_close(parser, args): |
"""Closes the issue.""" |
+ _add_codereview_issue_select_options(parser) |
auth.add_auth_options(parser) |
options, args = parser.parse_args(args) |
+ _process_codereview_issue_select_options(parser, options) |
auth_config = auth.extract_auth_config_from_options(options) |
if args: |
parser.error('Unrecognized args: %s' % ' '.join(args)) |
- cl = Changelist(auth_config=auth_config) |
+ cl = Changelist(auth_config=auth_config, issue=options.issue, |
+ codereview=options.forced_codereview) |
# Ensure there actually is an issue to close. |
cl.GetDescription() |
cl.CloseIssue() |