#!/usr/bin/env python

import sys
import time
import argparse
import importlib
import bumblebee.theme
import bumblebee.outputs.i3

def print_module_list():
    # TODO
    pass

def main():
    parser = argparse.ArgumentParser(description="display system data in the i3bar")
    parser.add_argument("-m", "--modules", nargs="+", help="List of modules to load. The order of the list determines their order in the i3bar (from left to right)")
    parser.add_argument("-l", "--list", action="store_true", help="List all available modules and themes")
    parser.add_argument("-t", "--theme", help="Specify which theme to use for drawing the modulemoduless")

    args = parser.parse_args()

    if args.list:
        print_module_list()
        sys.exit(0)

    modules = []
    theme = bumblebee.theme.Theme(args.theme) if args.theme else bumblebee.theme.Theme()
    for m in args.modules:
        # TODO: how to cleanly handle errors here?
        # (useful error messages)
        module_name = m if not ":" in m else m.split(":")[0]
        module_args = None if not ":" in m else m.split(":")[1:]
        module = importlib.import_module("bumblebee.modules.%s" % module_name)
        modules.append(getattr(module, "Module")(theme, module_args))

    output = bumblebee.outputs.i3.i3bar()

    print output.start()
    sys.stdout.flush()

    while True:
        for m in modules:
            output.add(m)
        print output.get()
        sys.stdout.flush()
        time.sleep(1)

    print output.stop()

if __name__ == "__main__":
    main()

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4