diff options
author | Eric Lin <anselor@gmail.com> | 2018-04-25 18:22:46 -0400 |
---|---|---|
committer | Eric Lin <anselor@gmail.com> | 2018-04-25 18:22:46 -0400 |
commit | 2a68a0ea0bdeff6286a9986c891b49d890fdd629 (patch) | |
tree | 4484974b2a35522a56c3442b661b219f7e9dc435 /cmd2/cmd2.py | |
parent | 0a1c41ce7048b45fc7ef9b0176d988c26861224e (diff) | |
download | cmd2-git-2a68a0ea0bdeff6286a9986c891b49d890fdd629.tar.gz |
Trap SystemExit when calling argparse.parse() to on argparse commands.
Diffstat (limited to 'cmd2/cmd2.py')
-rwxr-xr-x | cmd2/cmd2.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 4437426e..98334819 100755 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -251,8 +251,12 @@ def with_argparser_and_unknown_args(argparser: argparse.ArgumentParser) -> Calla @functools.wraps(func) def cmd_wrapper(instance, cmdline): lexed_arglist = parse_quoted_string(cmdline) - args, unknown = argparser.parse_known_args(lexed_arglist) - return func(instance, args, unknown) + try: + args, unknown = argparser.parse_known_args(lexed_arglist) + except SystemExit: + return + else: + return func(instance, args, unknown) # argparser defaults the program name to sys.argv[0] # we want it to be the name of our command @@ -288,8 +292,12 @@ def with_argparser(argparser: argparse.ArgumentParser) -> Callable: @functools.wraps(func) def cmd_wrapper(instance, cmdline): lexed_arglist = parse_quoted_string(cmdline) - args = argparser.parse_args(lexed_arglist) - return func(instance, args) + try: + args = argparser.parse_args(lexed_arglist) + except SystemExit: + return + else: + return func(instance, args) # argparser defaults the program name to sys.argv[0] # we want it to be the name of our command |