diff --git a/knack/cli.py b/knack/cli.py index 8a21474..ec903a9 100644 --- a/knack/cli.py +++ b/knack/cli.py @@ -219,15 +219,20 @@ def invoke(self, args, initial_invocation_data=None, out_file=None): if cmd_result and cmd_result.result is not None: formatter = self.output.get_formatter(output_type) self.output.out(cmd_result, formatter=formatter, out_file=out_file) - self.raise_event(EVENT_CLI_POST_EXECUTE) except KeyboardInterrupt as ex: - self.result = CommandResultItem(None, error=ex) exit_code = 1 + self.result = CommandResultItem(None, error=ex, exit_code=exit_code) except Exception as ex: # pylint: disable=broad-except exit_code = self.exception_handler(ex) - self.result = CommandResultItem(None, error=ex) + self.result = CommandResultItem(None, error=ex, exit_code=exit_code) + except SystemExit as ex: + exit_code = ex.code + self.result = CommandResultItem(None, error=ex, exit_code=exit_code) + raise ex finally: + self.raise_event(EVENT_CLI_POST_EXECUTE) + if self.enable_color: colorama.deinit() - self.result.exit_code = exit_code + return exit_code