#!/usr/bin/env python3

# Import CherryPy
import cherrypy


def shim(app):
    cherrypy.server.unsubscribe()
    server = cherrypy._cpserver.Server()

    def _run(host="0.0.0.0", port=8080, pool_size=16, environment="production"):
        cherrypy.config.update(
            {
                "environment": environment,
                "engine.autoreload.on": False,
                "log.screen": True,
            }
        )
        cherrypy.tree.graft(app, "/")

        server.socket_host = host
        server.socket_port = port
        server.thread_pool = pool_size
        server.subscribe()

        cherrypy.engine.start()
        cherrypy.engine.block()

    server.run = _run

    return server
