view piecrust/commands/builtin/serving.py @ 1145:e94737572542

serve: Fix an issue where false positive matches were rendered as the requested page. Now we try to render the page, but also try to detect for the most common "empty" pages.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 05 Jun 2018 22:08:51 -0700
parents 33a89139c284
children
line wrap: on
line source

import logging
from piecrust.commands.base import ChefCommand


logger = logging.getLogger(__name__)


class ServeCommand(ChefCommand):
    def __init__(self):
        super(ServeCommand, self).__init__()
        self.name = 'serve'
        self.description = "Runs a local web server to serve your website."
        self.cache_name = 'server'

    def setupParser(self, parser, app):
        parser.add_argument(
            '-p', '--port',
            help="The port for the web server",
            default=8080)
        parser.add_argument(
            '-a', '--address',
            help="The host for the web server",
            default='localhost')
        parser.add_argument(
            '--use-reloader',
            help="Restart the server when PieCrust code changes",
            action='store_true')
        parser.add_argument(
            '--use-debugger',
            help="Show the debugger when an error occurs",
            action='store_true')
        parser.add_argument(
            '--admin',
            help="Also serve the administration panel.",
            action='store_true')
        parser.add_argument(
            '--wsgi',
            help="The WSGI server implementation to use",
            choices=['werkzeug', 'gunicorn'],
            default='werkzeug')

    def run(self, ctx):
        appfactory = ctx.appfactory
        host = ctx.args.address
        port = int(ctx.args.port)
        use_debugger = ctx.args.debug or ctx.args.use_debugger

        from piecrust.serving.wrappers import run_piecrust_server
        run_piecrust_server(
            ctx.args.wsgi, appfactory, host, port,
            is_cmdline_mode=True,
            serve_admin=ctx.args.admin,
            use_reloader=ctx.args.use_reloader,
            use_debugger=use_debugger)