Implements commands as extensions using stevedore; adds run and init command.

This commit is contained in:
Romain Dorgueil
2017-01-10 23:09:40 +01:00
parent f736e7e7e3
commit 9daefd7207
9 changed files with 115 additions and 17 deletions

View File

@ -0,0 +1,22 @@
import argparse
from stevedore import ExtensionManager
def entrypoint():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='command')
subparsers.required = True
def register_extension(ext):
parser = subparsers.add_parser(ext.name)
command = ext.plugin(parser)
parser.set_defaults(command=command)
mgr = ExtensionManager(namespace='bonobo.commands', )
mgr.map(register_extension)
args = parser.parse_args().__dict__
command = args.pop('command')
command(**args)