Mercurial > hg
changeset 28622:527cf881d000
dispatch: extract function that tests command attributes
This function will host the compatibility layer for old third-party commands.
See the next patch for details.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 14 Mar 2016 00:14:43 +0900 |
parents | d856e85a8a7a |
children | 38dc3f28f478 |
files | hgext/mq.py mercurial/dispatch.py |
diffstat | 2 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/mq.py Mon Mar 14 00:06:52 2016 +0900 +++ b/hgext/mq.py Mon Mar 14 00:14:43 2016 +0900 @@ -66,6 +66,7 @@ from mercurial.node import bin, hex, short, nullid, nullrev from mercurial.lock import release from mercurial import commands, cmdutil, hg, scmutil, util, revset +from mercurial import dispatch from mercurial import extensions, error, phases from mercurial import patch as patchmod from mercurial import lock as lockmod @@ -3566,7 +3567,7 @@ for cmd, entry in cmdtable.iteritems(): cmd = cmdutil.parsealiases(cmd)[0] func = entry[0] - if func.norepo: + if dispatch._cmdattr(ui, cmd, func, 'norepo'): continue entry = extensions.wrapcommand(cmdtable, cmd, mqcommand) entry[1].extend(mqopt)
--- a/mercurial/dispatch.py Mon Mar 14 00:06:52 2016 +0900 +++ b/mercurial/dispatch.py Mon Mar 14 00:14:43 2016 +0900 @@ -746,6 +746,9 @@ return lambda: runcommand(lui, None, cmd, args[:1], ui, options, d, [], {}) +def _cmdattr(ui, cmd, func, attr): + return getattr(func, attr) + _loaded = set() # list of (objname, loadermod, loadername) tuple: @@ -874,7 +877,7 @@ repo = None cmdpats = args[:] - if not func.norepo: + if not _cmdattr(ui, cmd, func, 'norepo'): # use the repo from the request only if we don't have -R if not rpath and not cwd: repo = req.repo @@ -895,8 +898,9 @@ except error.RepoError: if rpath and rpath[-1]: # invalid -R path raise - if not func.optionalrepo: - if func.inferrepo and args and not path: + if not _cmdattr(ui, cmd, func, 'optionalrepo'): + if (_cmdattr(ui, cmd, func, 'inferrepo') and + args and not path): # try to infer -R from command args repos = map(cmdutil.findrepo, args) guess = repos[0]