cli (base): catch SystemExit to do a proper quit when Ctrl-C is pressed.
This commit is contained in:
parent
40e7440de0
commit
3e51dc187c
1 changed files with 8 additions and 4 deletions
|
|
@ -116,7 +116,7 @@ class LiberviaCli:
|
|||
sys.exit(1)
|
||||
|
||||
self.bridge = bridge_module.AIOBridge()
|
||||
self._onQuitCallbacks = []
|
||||
self._on_quit_callbacks = []
|
||||
|
||||
def get_config(self, name, section=C.CONFIG_SECTION, default=None):
|
||||
"""Retrieve a setting value from sat.conf"""
|
||||
|
|
@ -301,7 +301,7 @@ class LiberviaCli:
|
|||
|
||||
@param callback(callback): method to call
|
||||
"""
|
||||
self._onQuitCallbacks.append((callback, args, kwargs))
|
||||
self._on_quit_callbacks.append((callback, args, kwargs))
|
||||
|
||||
def get_output_choices(self, output_type):
|
||||
"""Return valid output filters for output_type
|
||||
|
|
@ -730,7 +730,10 @@ class LiberviaCli:
|
|||
|
||||
def _run(self, args=None, namespace=None):
|
||||
self.loop = LiberviaCLILoop()
|
||||
self.loop.run(self, args, namespace)
|
||||
try:
|
||||
self.loop.run(self, args, namespace)
|
||||
except SystemExit:
|
||||
self.quit()
|
||||
|
||||
@classmethod
|
||||
def run(cls):
|
||||
|
|
@ -785,12 +788,13 @@ class LiberviaCli:
|
|||
"""
|
||||
# first the onQuitCallbacks
|
||||
try:
|
||||
callbacks_list = self._onQuitCallbacks
|
||||
callbacks_list = self._on_quit_callbacks
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
for callback, args, kwargs in callbacks_list:
|
||||
callback(*args, **kwargs)
|
||||
callbacks_list.clear()
|
||||
|
||||
self.loop.quit(exit_code)
|
||||
if raise_exc:
|
||||
|
|
|
|||
Loading…
Reference in a new issue