#!/usr/bin/env python3 import argparse import importlib arg_parser = argparse.ArgumentParser('cli', add_help=False) subparser = arg_parser.add_subparsers(dest='subcommand') for component in ['user', 'host', 'image', 'network', 'vm']: module = importlib.import_module('uncloud.cli.{}'.format(component)) parser = getattr(module, 'arg_parser') subparser.add_parser(name=parser.prog, parents=[parser]) def main(**kwargs): if not kwargs['subcommand']: arg_parser.print_help() else: name = kwargs.pop('subcommand') kwargs.pop('debug') mod = importlib.import_module('uncloud.cli.{}'.format(name)) _main = getattr(mod, 'main') _main(**kwargs)