summaryrefslogtreecommitdiff
path: root/gr-utils/python/utils/gr_modtool
diff options
context:
space:
mode:
authorJiří Pinkava <j-pi@seznam.cz>2016-06-26 13:04:41 +0200
committerJiří Pinkava <j-pi@seznam.cz>2016-06-30 01:38:45 +0200
commit9f62aa85ee15b6a7dd7283d834abc192c437ea13 (patch)
tree834fe66c09cd774a85adb5e35550ffa0bf0f4943 /gr-utils/python/utils/gr_modtool
parent5ff65f3804f7e7e19c29365ff73d645f241bd95a (diff)
modtool: replace OptionParser by ArgumentParser
Diffstat (limited to 'gr-utils/python/utils/gr_modtool')
-rwxr-xr-xgr-utils/python/utils/gr_modtool28
1 files changed, 18 insertions, 10 deletions
diff --git a/gr-utils/python/utils/gr_modtool b/gr-utils/python/utils/gr_modtool
index e714cf48e5..d9016840be 100755
--- a/gr-utils/python/utils/gr_modtool
+++ b/gr-utils/python/utils/gr_modtool
@@ -24,19 +24,27 @@
from gnuradio.modtool import *
+def setup_parser():
+ modules = get_modtool_modules(globals().values())
+ parser = ModTool.get_parser()
+ subparsers = parser.add_subparsers(title="Commands")
+ epilog = []
+ for module in modules:
+ subparser = subparsers.add_parser(module.name,
+ description=module.description)
+ module.setup_parser(subparser)
+ subparser.set_defaults(module=module)
+ epilog.append(" {:<22}{}".format(module.name, module.description))
+ parser.epilog = '\n'.join(epilog)
+ return parser
+
def main():
""" Here we go. Parse command, choose class and run. """
- cmd_dict = get_class_dict(globals().values())
- command = get_command_from_argv(cmd_dict.keys())
- if command is None:
- print 'Usage:' + Templates['usage']
- exit(2)
- modtool = cmd_dict[command]()
- try:
- (options, args) = modtool.parser.parse_args()
- modtool.setup(options, args)
- modtool.run()
+ parser = setup_parser()
+ args = parser.parse_args()
+ try:
+ args.module().run(args)
except ModToolException as err:
print >> sys.stderr, err
exit(1)