Source code for capitains_nautilus.cmd

# -*- coding: utf-8 -*-

from capitains_nautilus.flask_ext import FlaskNautilus
from capitains_nautilus.cts.resolver import NautilusCTSResolver
from werkzeug.contrib.cache import FileSystemCache, RedisCache, NullCache
from flask import Flask
import argparse
import logging

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop


def _commandline(repositories,
                 port=8000, host="127.0.0.1", debug=False,
                 cache=None, cache_path="./cache", redis=None):
    """ Run a CTS API from command line.

    .. warning:: This function should not be used in the production context

    :param repositories:
    :param port:
    :param ip:
    :param debug:
    :param cache:
    :param cache_path:
    :return:
    """

    if cache == "redis":
        nautilus_cache = RedisCache(redis)
        cache_type = "redis"
    elif cache == "filesystem":
        nautilus_cache = FileSystemCache(cache_path)
        cache_type = "simple"
    else:
        nautilus_cache = NullCache()
        cache_type = "simple"

    app = Flask("Nautilus")
    if debug:
        app.logger.setLevel(logging.INFO)

    resolver = NautilusCTSResolver(resource=repositories)
    nautilus = FlaskNautilus(
        app=app,
        resolver=resolver
        #parser_cache=WerkzeugCacheWrapper(nautilus_cache),
        #logger=None
    )
    nautilus.resolver.parse()
    if debug:
        app.run(debug=debug, port=port, host=host)
    else:
        app.debug = debug
        http_server = HTTPServer(WSGIContainer(app))
        http_server.bind(port=port, address=host)
        http_server.start(0)
        IOLoop.current().start()


[docs]def cmd(): parser = argparse.ArgumentParser(description='Capitains Nautilus CTS API') parser.add_argument('repositories', metavar='repository', type=str, nargs='+', help='List of path to use to populate the repository') parser.add_argument('--port', type=int, default=8000, help='Port to use for the HTTP Server') parser.add_argument('--host', type=str, default="127.0.0.1", help='Host to use for the HTTP Server') parser.add_argument("--cache", choices=["redis", "filesystem", "none"], default=None, help="Cache system to use") parser.add_argument("--redis", default=None, help="Redis address for the cache server") parser.add_argument("--cache_path", default="./cache", help="Cache Directory Path") parser.add_argument('--debug', action="store_true", default=False, help="Set-up the application for debugging") args = parser.parse_args() if args.repositories: _commandline(**vars(args))
if __name__ == "__main__": cmd()