Bug 913231 - Allow mach commands to easily dispatch to other mach commands; r=jhammel

DONTBUILD (NPOTB)
This commit is contained in:
Gregory Szorc 2013-09-05 15:41:45 -07:00
Родитель f36f4ff254
Коммит cea88b0387
1 изменённых файлов: 23 добавлений и 1 удалений

Просмотреть файл

@ -38,6 +38,28 @@ class MachRegistrar(object):
self.categories[name] = (title, description, priority) self.categories[name] = (title, description, priority)
self.commands_by_category[name] = set() self.commands_by_category[name] = set()
def dispatch(self, name, context=None, **args):
"""Dispatch/run a command.
Commands can use this to call other commands.
"""
# TODO The logic in this function overlaps with code in
# mach.main.Main._run() and should be consolidated.
handler = self.command_handlers[name]
cls = handler.cls
if handler.pass_context and not context:
raise Exception('mach command class requires context.')
if handler.pass_context:
instance = cls(context)
else:
instance = cls()
fn = getattr(instance, handler.method)
return fn(**args) or 0
Registrar = MachRegistrar() Registrar = MachRegistrar()