diff --git a/bumblebee/modules/pacman.py b/bumblebee/modules/pacman.py index 4fd0cd8..43ff18b 100644 --- a/bumblebee/modules/pacman.py +++ b/bumblebee/modules/pacman.py @@ -12,53 +12,49 @@ import bumblebee.input import bumblebee.output import bumblebee.engine +#list of repositories the last one sould always be other +repos = ["community", "core", "extra", "other"] + class Module(bumblebee.engine.Module): def __init__(self, engine, config): super(Module, self).__init__(engine, config, bumblebee.output.Widget(full_text=self.updates) ) self._count = 0 - self._out = "" def updates(self, widget): - return self._out + return '/'.join(map(lambda x: str(widget.get(x,0)), repos)) def update(self, widgets): path = os.path.dirname(os.path.abspath(__file__)) if self._count == 0: - self._out = "?/?/?/?" try: result = bumblebee.util.execute("{}/../../bin/pacman-updates".format(path)) - self._community = 0 - self._core = 0 - self._extra = 0 - self._other = 0 + + count = len(repos)*[0] for line in result.splitlines(): if line.startswith("http"): - if "community" in line: - self._community += 1 - continue - if "core" in line: - self._core += 1; - continue - if "extra" in line: - self._extra += 1 - continue - self._other += 1 - self._out = str(self._core)+"/"+str(self._extra)+"/"+str(self._community)+"/"+str(self._other) - except RuntimeError: - self._out = "?/?/?/?" + for i in range(len(repos)-1): + if "/" + repos[i] + "/" in line: + count[i] += 1 + break + else: + result[-1] += 1 + + for i in range(len(repos)): + widgets[0].set(repos[i], count[i]) + + except BaseException as a: + raise a # TODO: improve this waiting mechanism a bit self._count += 1 self._count = 0 if self._count > 300 else self._count - def sumUpdates(self): - return self._core + self._community + self._extra + self._other - def state(self, widget): - if self.sumUpdates() > 0: + sumUpdates = sum(map(lambda x: widget.get(x,0), repos)) + if sumUpdates > 0: return "critical" # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4