forked from uncloud/uncloud
23 lines
709 B
Python
23 lines
709 B
Python
#!/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)
|