From patchwork Mon Dec 16 23:20:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7639: releasenotes: extract helper for checking for incompatible arguments From: phabricator X-Patchwork-Id: 43875 Message-Id: <6b92cebd6bab8423b45651f48ce8b90a@localhost.localdomain> To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Mon, 16 Dec 2019 23:20:24 +0000 martinvonz edited the summary of this revision. martinvonz updated this revision to Diff 18765. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7639?vs=18708&id=18765 BRANCH default CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7639/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7639 AFFECTED FILES hgext/releasenotes.py mercurial/cmdutil.py CHANGE DETAILS To: martinvonz, #hg-reviewers Cc: mercurial-devel diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -272,6 +272,16 @@ previous = x +def check_incompatible_arguments(opts, first, *others): + """abort if the first argument is given along with any of the others + + Unlike check_at_most_one_arg(), `others` are not mutually exclusive + among themselves. + """ + for other in others: + check_at_most_one_arg(opts, first, other) + + def resolvecommitoptions(ui, opts): """modify commit options dict to handle related options diff --git a/hgext/releasenotes.py b/hgext/releasenotes.py --- a/hgext/releasenotes.py +++ b/hgext/releasenotes.py @@ -20,6 +20,7 @@ from mercurial.i18n import _ from mercurial.pycompat import open from mercurial import ( + cmdutil, config, error, minirst, @@ -653,14 +654,9 @@ opts = pycompat.byteskwargs(opts) sections = releasenotessections(ui, repo) - listflag = opts.get(b'list') + cmdutil.check_incompatible_arguments(opts, b'list', b'rev', b'check') - if listflag and opts.get(b'rev'): - raise error.Abort(_(b'cannot use both \'--list\' and \'--rev\'')) - if listflag and opts.get(b'check'): - raise error.Abort(_(b'cannot use both \'--list\' and \'--check\'')) - - if listflag: + if opts.get(b'list'): return _getadmonitionlist(ui, sections) rev = opts.get(b'rev')