@@ -84,7 +84,7 @@ def parse_args(argv: Sequence[str]) -> Optional[Dict[str, Any]]:
8484 default_helper = options .get_section_data ('Util_Config' , 'default_helper' , None )
8585 global_usage = "Additional arguments for specific command.\n \n All numeric values are in hex\n <width> is in {1, byte, 2, word, 4, dword}\n \n "
8686 cmds = import_cmds ()
87- parser = argparse .ArgumentParser (usage = '%(prog)s [options] <command>' , add_help = False )
87+ parser = argparse .ArgumentParser (usage = '%(prog)s [options] <command>' , add_help = False , exit_on_error = False )
8888 options = parser .add_argument_group ('Options' )
8989 options .add_argument ('-h' , '--help' , dest = 'show_help' , help = "Show this message and exit" , action = 'store_true' )
9090 options .add_argument ('-v' , '--verbose' , help = 'Verbose logging' , action = 'store_true' )
@@ -106,8 +106,11 @@ def parse_args(argv: Sequence[str]) -> Optional[Dict[str, Any]]:
106106 options .add_argument ('_cmd' , metavar = 'Command' , nargs = '?' , choices = sorted (cmds .keys ()), type = str .lower , default = "help" ,
107107 help = f"Util command to run: {{{ ',' .join (sorted (cmds .keys ()))} }}" )
108108 options .add_argument ('_cmd_args' , metavar = 'Command Args' , nargs = argparse .REMAINDER , help = global_usage )
109- par = vars (parser .parse_args (argv ))
110-
109+ try :
110+ par = vars (parser .parse_args (argv ))
111+ except argparse .ArgumentError as arg_err :
112+ print (f'Argument parsing error: { str (arg_err )} ' )
113+ return None
111114 if par ['_cmd' ] == 'help' or par ['show_help' ]:
112115 if par ['_show_banner' ]:
113116 print_banner (argv , get_version (), get_message ())
0 commit comments