import argparse
import daemon
import logging
from logging.config import fileConfig


logger = logging.getLogger(__name__)


from winchester.config import ConfigManager
from winchester.pipeline_manager import PipelineManager
from winchester import time_sync


def main():
    parser = argparse.ArgumentParser(description="Winchester pipeline worker")
    parser.add_argument('--config', '-c', default='winchester.yaml',
                        help='The name of the winchester config file')
    parser.add_argument('--daemon', '-d', help='Run in daemon mode.')
    args = parser.parse_args()
    conf = ConfigManager.load_config_file(args.config)

    if 'logging_config' in conf:
        fileConfig(conf['logging_config'])
    else:
        logging.basicConfig()
        if 'log_level' in conf:
            level = conf['log_level']
            level = getattr(logging, level.upper())
            logging.getLogger('winchester').setLevel(level)
    timesync = time_sync.TimeSync(conf)
    pipe = PipelineManager(conf, time_sync=timesync)
    if args.daemon:
        print "Backgrounding for daemon mode."
        with daemon.DaemonContext():
            pipe.run()
    else:
        pipe.run()


if __name__ == '__main__':
    main()
