Mercurial > evolve
diff hgext/evolve.py @ 1218:dd5e62979100
wrapcommand: allow adding additional arguments to commands
This allows eh.wrapcommand to specify additional parameters to be added to the
commands being wrapped. This will be useful when wrapping strip in the future.
author | Durham Goode <durham@fb.com> |
---|---|
date | Thu, 19 Mar 2015 10:52:28 -0700 |
parents | 4b10e2c6f7e3 |
children | 658b0d032699 |
line wrap: on
line diff
--- a/hgext/evolve.py Thu Mar 19 17:42:21 2015 -0700 +++ b/hgext/evolve.py Thu Mar 19 10:52:28 2015 -0700 @@ -141,8 +141,11 @@ """ for cont, funcname, func in self._duckpunchers: setattr(cont, funcname, func) - for command, wrapper in self._commandwrappers: - extensions.wrapcommand(commands.table, command, wrapper) + for command, wrapper, opts in self._commandwrappers: + entry = extensions.wrapcommand(commands.table, command, wrapper) + if opts: + for short, long, val, msg in opts: + entry[1].append((short, long, val, msg)) for cont, funcname, wrapper in self._functionwrappers: extensions.wrapfunction(cont, funcname, wrapper) for c in self._uicallables: @@ -163,13 +166,17 @@ revset.symbols[name] = symbol for name, kw in self._templatekws: templatekw.keywords[name] = kw - for ext, command, wrapper in self._extcommandwrappers: + for ext, command, wrapper, opts in self._extcommandwrappers: if ext not in knownexts: e = extensions.find(ext) if e is None: raise util.Abort('extension %s not found' % ext) knownexts[ext] = e.cmdtable - extensions.wrapcommand(knownexts[ext], commands, wrapper) + entry = extensions.wrapcommand(knownexts[ext], command, wrapper) + if opts: + for short, long, val, msg in opts: + entry[1].append((short, long, val, msg)) + for c in self._extcallables: c(ui) @@ -257,7 +264,7 @@ return keyword return dec - def wrapcommand(self, command, extension=None): + def wrapcommand(self, command, extension=None, opts=[]): """Decorated function is a command wrapper The name of the command must be given as the decorator argument. @@ -276,12 +283,16 @@ ui.note('Barry!') return orig(ui, repo, *args, **kwargs) + The `opts` argument allows specifying additional arguments for the + command. + """ def dec(wrapper): if extension is None: - self._commandwrappers.append((command, wrapper)) + self._commandwrappers.append((command, wrapper, opts)) else: - self._extcommandwrappers.append((extension, command, wrapper)) + self._extcommandwrappers.append((extension, command, wrapper, + opts)) return wrapper return dec