mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-python
synced 2026-01-15 09:53:32 +01:00
cmd.Cmds: Support --backtrace
Wrap all execution in try-block, don't raise in except block unless --backtrace is passed to the command line. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
b464f20e6c
commit
5ee88c1a81
1 changed files with 13 additions and 1 deletions
|
|
@ -67,6 +67,7 @@ class Cmds: # export
|
|||
formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=self.__description)
|
||||
self.__parser.add_argument('--log-flags', help='Log flags', default=log_flags)
|
||||
self.__parser.add_argument('--log-level', help='Log level', default=log_level)
|
||||
self.__parser.add_argument('--backtrace', help='Show exception backtraces', action='store_true', default=False)
|
||||
if self.__modules == None:
|
||||
self.__modules = [ '__main__' ]
|
||||
subcmds = set()
|
||||
|
|
@ -97,6 +98,7 @@ class Cmds: # export
|
|||
self.args = self.__parser.parse_args(args=argv)
|
||||
set_flags(self.args.log_flags)
|
||||
set_level(self.args.log_level)
|
||||
self.__back_trace = self.args.backtrace
|
||||
|
||||
# This is the toplevel parser, i.e. no func member has been added to the args via
|
||||
#
|
||||
|
|
@ -110,7 +112,17 @@ class Cmds: # export
|
|||
self.__parser.print_help()
|
||||
return None
|
||||
|
||||
return await self.args.func(self.args)
|
||||
if self.__back_trace:
|
||||
ret = await self.args.func(self.args)
|
||||
else:
|
||||
try:
|
||||
ret = await self.args.func(self.args)
|
||||
except Exception as e:
|
||||
if hasattr(e, 'message'):
|
||||
slog(ERR, e.message)
|
||||
else:
|
||||
slog(ERR, f'Exception: {type(e)}: {e}')
|
||||
sys.exit(1)
|
||||
|
||||
def __del__(self):
|
||||
if self.__own_eloop:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue