From: Alfredo Deza Date: Wed, 12 Jul 2017 16:13:35 +0000 (-0400) Subject: ceph-volume: terminal: add CLI dispatching helpers X-Git-Tag: ses5-milestone10~3^2~5^2~54 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=49dadb3fbc40e6e001a1c4fda19519decde16bbf;p=ceph.git ceph-volume: terminal: add CLI dispatching helpers Signed-off-by: Alfredo Deza --- diff --git a/src/ceph-volume/ceph_volume/terminal.py b/src/ceph-volume/ceph_volume/terminal.py index 7bcb4ddf3a6e..55ce2d4ca280 100644 --- a/src/ceph-volume/ceph_volume/terminal.py +++ b/src/ceph-volume/ceph_volume/terminal.py @@ -120,3 +120,32 @@ def warning(msg): def success(msg): return _Write(prefix=green_arrow).raw(msg) + + +def dispatch(mapper, argv=None): + argv = argv or sys.argv + for count, arg in enumerate(argv, 1): + if arg in mapper.keys(): + instance = mapper.get(arg)(argv[count:]) + if hasattr(instance, 'main'): + instance.main() + raise SystemExit(0) + + +def subhelp(mapper): + """ + Look at every value of every key in the mapper and will output any + ``class.help`` possible to return it as a string that will be sent to + stdout. + """ + help_text_lines = [] + for key, value in mapper.items(): + try: + help_text = value.help + except AttributeError: + continue + help_text_lines.append("%-24s %s" % (key, help_text)) + + if help_text_lines: + return "Available subcommands:\n\n%s" % '\n'.join(help_text_lines) + return ''