diff --git a/bmibabel/cmd/bmi.py b/bmibabel/cmd/bmi.py index bab7a8a..cb29000 100644 --- a/bmibabel/cmd/bmi.py +++ b/bmibabel/cmd/bmi.py @@ -1,5 +1,7 @@ from __future__ import print_function +import sys + from . import bmi_babelize as babelize from . import bmi_find as find from . import bmi_parameters as parameters @@ -8,14 +10,38 @@ from . import bmi_install as install +def load_subparsers(subparsers): + import pkg_resources + + class Plugins(object): + pass + + + plugins = Plugins() + + + for entry_point in pkg_resources.iter_entry_points(group='bmi.plugins'): + try: + plugin = entry_point.load() + except Exception as err: + pass + else: + plugin(subparsers) + + def main(): import argparse - parser = argparse.ArgumentParser() + parser = argparse.ArgumentParser( + fromfile_prefix_chars='@', + ) - subparsers = parser.add_subparsers(title='subcommands', - description='valid commands', - help='additional help') + subparsers = parser.add_subparsers( + title='subcommands', + description='valid commands', + help='additional help', + ) + subparsers.required = True babelize.create_parser(addto=subparsers) find.create_parser(addto=subparsers) @@ -24,6 +50,8 @@ def main(): files.create_parser(addto=subparsers) install.create_parser(addto=subparsers) + load_subparsers(subparsers) + args = parser.parse_args() rtn = args.func(args)