[core/config] Add interval (as parameter store)
Add a generic parameter store to the configuration and use it to set the parameter "interval" (backwards compatibility)
This commit is contained in:
parent
8a2ef5ea5d
commit
5a60a23ebd
3 changed files with 32 additions and 4 deletions
|
@ -17,6 +17,7 @@ def main():
|
||||||
module.update()
|
module.update()
|
||||||
sys.stdout.write(output.draw(module))
|
sys.stdout.write(output.draw(module))
|
||||||
sys.stdout.write(output.end_status_line())
|
sys.stdout.write(output.end_status_line())
|
||||||
|
output.sleep(config.interval())
|
||||||
sys.stdout.write(output.stop())
|
sys.stdout.write(output.stop())
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,30 @@
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
MODULE_HELP = "Specify a space-separated list of modules to load. The order of the list determines their order in the i3bar (from left to right). Use <module>:<alias> to provide an alias in case you want to load the same module multiple times, but specify different parameters."
|
import util.store
|
||||||
|
|
||||||
class Config(object):
|
MODULE_HELP = "Specify a space-separated list of modules to load. The order of the list determines their order in the i3bar (from left to right). Use <module>:<alias> to provide an alias in case you want to load the same module multiple times, but specify different parameters."
|
||||||
|
PARAMETER_HELP = "Provide configuration parameters in the form of <module>.<key>=<value>"
|
||||||
|
|
||||||
|
class Config(util.store.Store):
|
||||||
def __init__(self, args):
|
def __init__(self, args):
|
||||||
|
super(Config, self).__init__()
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='bumblebee-status is a modular, theme-able status line generator for the i3 window manager. https://github.com/tobi-wan-kenobi/bumblebee-status/wiki')
|
parser = argparse.ArgumentParser(description='bumblebee-status is a modular, theme-able status line generator for the i3 window manager. https://github.com/tobi-wan-kenobi/bumblebee-status/wiki')
|
||||||
parser.add_argument("-m", "--modules", nargs="+", action='append', default=[],
|
parser.add_argument("-m", "--modules", nargs="+", action='append', default=[],
|
||||||
help=MODULE_HELP)
|
help=MODULE_HELP)
|
||||||
|
parser.add_argument("-p", "--parameters", nargs="+", action='append', default=[],
|
||||||
|
help=PARAMETER_HELP)
|
||||||
self._args = parser.parse_args(args)
|
self._args = parser.parse_args(args)
|
||||||
|
|
||||||
|
parameters = [ item for sub in self._args.parameters for item in sub ]
|
||||||
|
for param in parameters:
|
||||||
|
key, value = param.split("=", 1)
|
||||||
|
self.set(key, value)
|
||||||
|
|
||||||
def modules(self):
|
def modules(self):
|
||||||
return [item for sub in self._args.modules for item in sub]
|
return [item for sub in self._args.modules for item in sub]
|
||||||
|
|
||||||
|
def interval(self):
|
||||||
|
return float(self.get("interval", 1))
|
||||||
|
|
||||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
||||||
|
|
|
@ -10,12 +10,24 @@ class config(unittest.TestCase):
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def test_module_parameter(self):
|
def test_module(self):
|
||||||
cfg = core.config.Config([ '-m' ] + self._someModules)
|
cfg = core.config.Config([ '-m' ] + self._someModules)
|
||||||
self.assertEqual(self._someModules, cfg.modules())
|
self.assertEqual(self._someModules, cfg.modules())
|
||||||
|
|
||||||
def test_module_parameter_ordering_maintained(self):
|
def test_module_ordering_maintained(self):
|
||||||
cfg = core.config.Config([ '-m' ] + self._someModules + [ '-m' ] + self._moreModules)
|
cfg = core.config.Config([ '-m' ] + self._someModules + [ '-m' ] + self._moreModules)
|
||||||
self.assertEqual(self._someModules + self._moreModules, cfg.modules())
|
self.assertEqual(self._someModules + self._moreModules, cfg.modules())
|
||||||
|
|
||||||
|
def test_default_interval(self):
|
||||||
|
cfg = core.config.Config([])
|
||||||
|
self.assertEqual(1, cfg.interval())
|
||||||
|
|
||||||
|
def test_interval(self):
|
||||||
|
cfg = core.config.Config([ '-p', 'interval=4'])
|
||||||
|
self.assertEqual(4, cfg.interval())
|
||||||
|
|
||||||
|
def test_float_interval(self):
|
||||||
|
cfg = core.config.Config([ '-p', 'interval=0.5'])
|
||||||
|
self.assertEqual(0.5, cfg.interval())
|
||||||
|
|
||||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
||||||
|
|
Loading…
Reference in a new issue