##// END OF EJS Templates
extensions: show deprecation warning for the use of cmdutil.command...
Yuya Nishihara -
r32343:d47d7d3b default
parent child Browse files
Show More
@@ -3335,7 +3335,10 b' def _performrevert(repo, parents, ctx, a'
3335 if f in copied:
3335 if f in copied:
3336 repo.dirstate.copy(copied[f], f)
3336 repo.dirstate.copy(copied[f], f)
3337
3337
3338 command = registrar.command
3338 class command(registrar.command):
3339 def _doregister(self, func, name, *args, **kwargs):
3340 func._deprecatedregistrar = True # flag for deprecwarn in extensions.py
3341 return super(command, self)._doregister(func, name, *args, **kwargs)
3339
3342
3340 # a list of (ui, repo, otherpeer, opts, missing) functions called by
3343 # a list of (ui, repo, otherpeer, opts, missing) functions called by
3341 # commands.outgoing. "missing" is "missing" of the result of
3344 # commands.outgoing. "missing" is "missing" of the result of
@@ -121,10 +121,13 b' def _reportimporterror(ui, err, failed, '
121 # attributes set by registrar.command
121 # attributes set by registrar.command
122 _cmdfuncattrs = ('norepo', 'optionalrepo', 'inferrepo')
122 _cmdfuncattrs = ('norepo', 'optionalrepo', 'inferrepo')
123
123
124 def _validatecmdtable(cmdtable):
124 def _validatecmdtable(ui, cmdtable):
125 """Check if extension commands have required attributes"""
125 """Check if extension commands have required attributes"""
126 for c, e in cmdtable.iteritems():
126 for c, e in cmdtable.iteritems():
127 f = e[0]
127 f = e[0]
128 if getattr(f, '_deprecatedregistrar', False):
129 ui.deprecwarn("cmdutil.command is deprecated, use "
130 "registrar.command to register '%s'" % c, '4.6')
128 missing = [a for a in _cmdfuncattrs if not util.safehasattr(f, a)]
131 missing = [a for a in _cmdfuncattrs if not util.safehasattr(f, a)]
129 if not missing:
132 if not missing:
130 continue
133 continue
@@ -153,7 +156,7 b' def load(ui, name, path):'
153 ui.warn(_('(third party extension %s requires version %s or newer '
156 ui.warn(_('(third party extension %s requires version %s or newer '
154 'of Mercurial; disabling)\n') % (shortname, minver))
157 'of Mercurial; disabling)\n') % (shortname, minver))
155 return
158 return
156 _validatecmdtable(getattr(mod, 'cmdtable', {}))
159 _validatecmdtable(ui, getattr(mod, 'cmdtable', {}))
157
160
158 _extensions[shortname] = mod
161 _extensions[shortname] = mod
159 _order.append(shortname)
162 _order.append(shortname)
@@ -1590,4 +1590,19 b' Test synopsis and docstring extending'
1590 $ hg help bookmarks | grep GREPME
1590 $ hg help bookmarks | grep GREPME
1591 hg bookmarks [OPTIONS]... [NAME]... GREPME [--foo] [-x]
1591 hg bookmarks [OPTIONS]... [NAME]... GREPME [--foo] [-x]
1592 GREPME make sure that this is in the help!
1592 GREPME make sure that this is in the help!
1593 $ cd ..
1593
1594
1595 Show deprecation warning for the use of cmdutil.command
1596
1597 $ cat > nonregistrar.py <<EOF
1598 > from mercurial import cmdutil
1599 > cmdtable = {}
1600 > command = cmdutil.command(cmdtable)
1601 > @command('foo', [], norepo=True)
1602 > def foo(ui):
1603 > pass
1604 > EOF
1605
1606 $ hg --config extensions.nonregistrar=`pwd`/nonregistrar.py version > /dev/null
1607 devel-warn: cmdutil.command is deprecated, use registrar.command to register 'foo'
1608 (compatibility will be dropped after Mercurial-4.6, update your code.) * (glob)
General Comments 0
You need to be logged in to leave comments. Login now