From a697500491febf4dc5cfea531ae21f8703c130d8 Mon Sep 17 00:00:00 2001 From: tobi-wan-kenobi Date: Sat, 16 May 2020 15:16:23 +0200 Subject: [PATCH] [core] add debugging around click events log commandline outputs and errors. allow input handlers to be configured as "waiting" for debugging purposes. see #628 --- bumblebee_status/core/input.py | 8 ++++---- bumblebee_status/core/module.py | 11 ++++++++++- bumblebee_status/util/cli.py | 2 ++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/bumblebee_status/core/input.py b/bumblebee_status/core/input.py index 71d481e..b775091 100644 --- a/bumblebee_status/core/input.py +++ b/bumblebee_status/core/input.py @@ -36,20 +36,20 @@ def __event_id(obj_id, button): return "{}::{}".format(obj_id, button_name(button)) -def __execute(cmd): +def __execute(cmd, wait=False): try: - util.cli.execute(cmd, wait=False, shell=True) + util.cli.execute(cmd, wait=wait, shell=True) except Exception as e: logging.error("failed to invoke callback: {}".format(e)) -def register(obj, button=None, cmd=None): +def register(obj, button=None, cmd=None, wait=False): event_id = __event_id(obj.id if obj is not None else "", button) logging.debug("registering callback {}".format(event_id)) if callable(cmd): core.event.register(event_id, cmd) else: - core.event.register(event_id, lambda _: __execute(cmd)) + core.event.register(event_id, lambda _: __execute(cmd, wait)) def trigger(event): diff --git a/bumblebee_status/core/module.py b/bumblebee_status/core/module.py index 81f2604..ba06848 100644 --- a/bumblebee_status/core/module.py +++ b/bumblebee_status/core/module.py @@ -7,6 +7,8 @@ import core.input import core.widget import core.decorators +import util.format + try: error = ModuleNotFoundError("") except Exception as e: @@ -211,7 +213,14 @@ class Module(core.input.Object): ] for action in actions: if self.parameter(action["name"]): - core.input.register(self, action["id"], self.parameter(action["name"])) + core.input.register( + self, + action["id"], + self.parameter(action["name"]), + util.format.asbool( + self.parameter("{}-wait".format(action["name"]), False) + ), + ) class Error(Module): diff --git a/bumblebee_status/util/cli.py b/bumblebee_status/util/cli.py index 2b07c75..3e4face 100644 --- a/bumblebee_status/util/cli.py +++ b/bumblebee_status/util/cli.py @@ -45,10 +45,12 @@ def execute( out, _ = proc.communicate() if proc.returncode != 0: err = "{} exited with code {}".format(cmd, proc.returncode) + logging.warning(err) if ignore_errors: return (proc.returncode, err) if return_exitcode else err raise RuntimeError(err) res = out.decode("utf-8") + logging.debug(res) return (proc.returncode, res) if return_exitcode else res return (0, "") if return_exitcode else ""