#! /usr/bin/env python
# -*- coding: utf-8 -*-

import argparse
import logging

from scotchwsgi.server import make_server

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('app_module', help="module with WSGI application 'app' variable defined")
parser.add_argument('--host', default='localhost', help="server hostname")
parser.add_argument('--port', default=8080, help="server port number", type=int)
parser.add_argument('--certfile', help="SSL public key certificate file")
parser.add_argument('--keyfile', help="SSL private key file")
parser.add_argument('--ca_certs', help="SSL CA certificate chain file")
parser.add_argument('--backlog', help="Max number of queued connections", type=int, default=100)
#parser.add_argument('--num_workers', help="Number of worker processes", type=int, default=4)
parser.add_argument('--request_timeout', help="Number of seconds to wait for a request before closing a connection", type=int, default=10)
args = parser.parse_args()

if args.certfile:
    ssl_config = {
        'certfile': args.certfile,
        'keyfile': args.keyfile,
        'ca_certs': args.ca_certs,
    }
else:
    ssl_config = None

server = make_server(
    args.host,
    args.port,
    args.app_module,
    ssl_config=ssl_config,
    backlog=args.backlog,
    #num_workers=args.num_workers,
    request_timeout=args.request_timeout,
)
server.start()
