Mercurial > hg
changeset 32343:d47d7d3bd07b
extensions: show deprecation warning for the use of cmdutil.command
Since this is a fundamental API for extensions, we set 1-year period until
actually removing it.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 09 Jan 2016 23:24:52 +0900 |
parents | e5fbf9687600 |
children | 864fc285d10a |
files | mercurial/cmdutil.py mercurial/extensions.py tests/test-extension.t |
diffstat | 3 files changed, 24 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Sat May 13 15:41:50 2017 +0900 +++ b/mercurial/cmdutil.py Sat Jan 09 23:24:52 2016 +0900 @@ -3335,7 +3335,10 @@ if f in copied: repo.dirstate.copy(copied[f], f) -command = registrar.command +class command(registrar.command): + def _doregister(self, func, name, *args, **kwargs): + func._deprecatedregistrar = True # flag for deprecwarn in extensions.py + return super(command, self)._doregister(func, name, *args, **kwargs) # a list of (ui, repo, otherpeer, opts, missing) functions called by # commands.outgoing. "missing" is "missing" of the result of
--- a/mercurial/extensions.py Sat May 13 15:41:50 2017 +0900 +++ b/mercurial/extensions.py Sat Jan 09 23:24:52 2016 +0900 @@ -121,10 +121,13 @@ # attributes set by registrar.command _cmdfuncattrs = ('norepo', 'optionalrepo', 'inferrepo') -def _validatecmdtable(cmdtable): +def _validatecmdtable(ui, cmdtable): """Check if extension commands have required attributes""" for c, e in cmdtable.iteritems(): f = e[0] + if getattr(f, '_deprecatedregistrar', False): + ui.deprecwarn("cmdutil.command is deprecated, use " + "registrar.command to register '%s'" % c, '4.6') missing = [a for a in _cmdfuncattrs if not util.safehasattr(f, a)] if not missing: continue @@ -153,7 +156,7 @@ ui.warn(_('(third party extension %s requires version %s or newer ' 'of Mercurial; disabling)\n') % (shortname, minver)) return - _validatecmdtable(getattr(mod, 'cmdtable', {})) + _validatecmdtable(ui, getattr(mod, 'cmdtable', {})) _extensions[shortname] = mod _order.append(shortname)
--- a/tests/test-extension.t Sat May 13 15:41:50 2017 +0900 +++ b/tests/test-extension.t Sat Jan 09 23:24:52 2016 +0900 @@ -1590,4 +1590,19 @@ $ hg help bookmarks | grep GREPME hg bookmarks [OPTIONS]... [NAME]... GREPME [--foo] [-x] GREPME make sure that this is in the help! + $ cd .. +Show deprecation warning for the use of cmdutil.command + + $ cat > nonregistrar.py <<EOF + > from mercurial import cmdutil + > cmdtable = {} + > command = cmdutil.command(cmdtable) + > @command('foo', [], norepo=True) + > def foo(ui): + > pass + > EOF + + $ hg --config extensions.nonregistrar=`pwd`/nonregistrar.py version > /dev/null + devel-warn: cmdutil.command is deprecated, use registrar.command to register 'foo' + (compatibility will be dropped after Mercurial-4.6, update your code.) * (glob)