pvl/web/args.py
author Tero Marttila <terom@paivola.fi>
Mon, 13 Jan 2014 19:41:38 +0200
changeset 362 003b624d35a8
parent 241 97a0a66e2211
permissions -rw-r--r--
pvl.web.args: --web-static
import codecs
import werkzeug.serving 
import optparse

import logging; log = logging.getLogger('pvl.web.args')

def parser (parser) :
    """
        Command-line args for pvl.web
    """

    parser = optparse.OptionGroup(parser, 'pvl.web')

    parser.add_option('--web-layout', metavar='TEMPLATE',
            help="Use template from given file for layout")

    parser.add_option('--web-static', metavar='PATH', default='static',
            help="Path to static files")

    return parser

def apply (options, application, *args, **opts) :
    """
        Build given pvl.web.Application subclass from options.
    """

    if options.web_layout :
        layout = codecs.open(options.web_layout, 'r', 'utf-8').read()
    else :
        layout = None
    
    return application(*args,
        layout      = layout,
        **opts
    )

def main (options, wsgi) :
    """
        Run the werkzeug development server.
    """

    static_files = { }

    if options.web_static :
        static_files['/static'] = options.web_static

    werkzeug.serving.run_simple('0.0.0.0', 8080, wsgi,
        #use_reloader    = True, 
        use_debugger    = (options.loglevel == logging.DEBUG),
        static_files    = static_files,
    )

    return 0