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

import argparse
import importlib
import logging
import os
import sys

from scotchwsgi.server import make_server

logger = logging.getLogger(__name__)

parser = argparse.ArgumentParser()
parser.add_argument('app_package', 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")
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")
args = parser.parse_args()

sys.path.append(os.getcwd())
app_package = importlib.import_module(args.app_package)
if not hasattr(app_package, 'app'):
    logger.error("'app' not found in {}".format(args.app_package))
    sys.exit(1)

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,
    app_package.app,
    ssl_config=ssl_config,
)
server.start()
