diff options
Diffstat (limited to 'tools/patman/cmdline.py')
-rw-r--r-- | tools/patman/cmdline.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tools/patman/cmdline.py b/tools/patman/cmdline.py index 108fa52d820..8e10c7bb14f 100644 --- a/tools/patman/cmdline.py +++ b/tools/patman/cmdline.py @@ -21,6 +21,25 @@ PATMAN_DIR = pathlib.Path(__file__).parent HAS_TESTS = os.path.exists(PATMAN_DIR / "func_test.py") +class ErrorCatchingArgumentParser(argparse.ArgumentParser): + def __init__(self, **kwargs): + self.exit_state = None + self.catch_error = False + super().__init__(**kwargs) + + def error(self, message): + if self.catch_error: + self.message = message + else: + super().error(message) + + def exit(self, status=0, message=None): + if self.catch_error: + self.exit_state = True + else: + super().exit(status, message) + + def add_send_args(par): """Add arguments for the 'send' command @@ -150,7 +169,7 @@ def setup_parser(): them as specified by tags you place in the commits. Use -n to do a dry run first.''' - parser = argparse.ArgumentParser(epilog=epilog) + parser = ErrorCatchingArgumentParser(epilog=epilog) parser.add_argument( '-D', '--debug', action='store_true', help='Enabling debugging (provides a full traceback on error)') |