#!/usr/bin/env python

import sys, optparse, ${package}, logging, os

from benri.utils import daemonize
from benri.log import initLogger
from benri.config import Config
from ${package}.service import Serve

def start(cfgpath, curdir):
    # read in the config file

    initLogger(${repr(package)})
    log = logging.getLogger(${repr(package)})

    try:
        config = Config(cfgpath, curdir)
    except Exception, e:
        sys.exit(str(e))

    server = Serve(config)

    try:
        server.start()
    except KeyboardInterrupt, e:
        log.debug("Received a keyboard interrupt, stopping server.")
        server.stop()
    except SystemExit, e:
        log.debug("Received system exit, stopping server.")
        server.stop()

if __name__ == "__main__":
    p = optparse.OptionParser(version=${repr(package)}.title() + ' ' + ${package}.__VERSION__, usage="%prog [options] <config file>")
    p.add_option("-d", "--daemon", action="store_const", const=True, dest="daemon", default=False, help="Runs the service in the background.")

    (opts, args) = p.parse_args()
    if len(args) < 1:
        p.print_version()
        p.print_help()
        sys.exit(-1)
    
    cfgpath = os.path.abspath(args[0])
    
    # this must be done before daemonize
    curdir = os.getcwd()
    
    if opts.daemon:
        daemonize()
    
    start(cfgpath, curdir)
