# HG changeset patch # User Durham Goode # Date 1426787548 25200 # Node ID dd5e629791008d549edd0ba4f2c71dcaebb7a359 # Parent 196c650d5ba9ce8726806198c331f5fa040bfe94 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. diff --git a/hgext/evolve.py b/hgext/evolve.py --- a/hgext/evolve.py +++ b/hgext/evolve.py @@ -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