diff --git a/swh/core/cli/__init__.py b/swh/core/cli/__init__.py --- a/swh/core/cli/__init__.py +++ b/swh/core/cli/__init__.py @@ -86,19 +86,37 @@ ctx.obj['log_level'] = log_level -def main(): - # Even though swh() sets up logging, we need an earlier basic logging setup - # for the next few logging statements - logging.basicConfig() - # load plugins that define cli sub commands - for entry_point in pkg_resources.iter_entry_points('swh.cli.subcommands'): +def register_entry_points(target_cmd, entry_points): + """Register entry points as subcommands for the target_cmd + + """ + for entry_point in entry_points: try: cmd = entry_point.load() - swh.add_command(cmd, name=entry_point.name) + target_cmd.add_command(cmd, name=entry_point.name) except Exception as e: logger.warning('Could not load subcommand %s: %s', entry_point.name, str(e)) + +def main(): + # Even though swh() sets up logging, we need an earlier basic logging setup + # for the next few logging statements + logging.basicConfig() + register_entry_points( + swh, pkg_resources.iter_entry_points('swh.cli.subcommands')) + + loader_subcommand_entrypoints = list(pkg_resources.iter_entry_points( + 'swh.cli.loader.subcommands')) + if len(loader_subcommand_entrypoints) > 0: + @swh.group() + @click.pass_context + def loader(ctx): + """Loader subcommand""" + return ctx + + register_entry_points(loader, loader_subcommand_entrypoints) + return swh(auto_envvar_prefix='SWH')