1+ import argparse
12import sys
23
3- from mmif import __specver__
4-
4+ import mmif
55from clams import develop
6- from clams .mmif_utils import source
7- from clams .mmif_utils import rewind
86from clams .app import *
97from clams .app import __all__ as app_all
108from clams .appmetadata import AppMetadata
1614
1715
1816def prep_argparser ():
19- import argparse
2017 parser = argparse .ArgumentParser ()
2118 parser .add_argument (
2219 '-v' , '--version' ,
2320 action = 'version' ,
24- version = version_template .format (__version__ , __specver__ )
21+ version = version_template .format (__version__ , mmif . __specver__ )
2522 )
2623 subparsers = parser .add_subparsers (title = 'sub-command' , dest = 'subcmd' )
27- for subcmd_module in [source , rewind , develop ]:
28- subcmd_name = subcmd_module .__name__ .rsplit ('.' )[- 1 ]
29- subcmd_parser = subcmd_module .prep_argparser (add_help = False )
30- subparsers .add_parser (subcmd_name , parents = [subcmd_parser ],
31- help = subcmd_module .describe_argparser ()[0 ],
32- description = subcmd_module .describe_argparser ()[1 ],
33- formatter_class = argparse .RawDescriptionHelpFormatter ,
34- )
35- return parser
24+ return parser , subparsers
3625
3726
3827def cli ():
39- parser = prep_argparser ()
28+ parser , subparsers = prep_argparser ()
29+ cli_modules = {}
30+ # thinly wrap all `mmif` subcommands
31+ # this is primarily for backward compatibility for `souce` and `rewind` subcmds
32+ to_register = list (mmif .find_all_modules ('mmif.utils.cli' ))
33+ # then add my own subcommands
34+ to_register .append (develop )
35+ for cli_module in to_register :
36+ cli_module_name = cli_module .__name__ .rsplit ('.' )[- 1 ]
37+ cli_modules [cli_module_name ] = cli_module
38+ subcmd_parser = cli_module .prep_argparser (add_help = False )
39+ subparsers .add_parser (cli_module_name , parents = [subcmd_parser ],
40+ help = cli_module .describe_argparser ()[0 ],
41+ description = cli_module .describe_argparser ()[1 ],
42+ formatter_class = argparse .RawDescriptionHelpFormatter ,
43+ )
4044 if len (sys .argv ) == 1 :
4145 parser .print_help (sys .stderr )
4246 sys .exit (1 )
4347 args = parser .parse_args ()
44- if args .subcmd == 'source' :
45- source .main (args )
46- if args .subcmd == 'rewind' :
47- rewind .main (args )
48- if args .subcmd == 'develop' :
49- develop .main (args )
48+ if args .subcmd not in cli_modules :
49+ parser .print_help (sys .stderr )
50+ else :
51+ cli_modules [args .subcmd ].main (args )
52+
53+ if __name__ == '__main__' :
54+ cli ()
0 commit comments