blob: 26375a61eb93505c47ef1b1c566dc008651a7042 [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import argparse
import cherrypy
import json
import os
import staticdirindex
from skypy.paths import Paths
import skypy.configuration as configuration
def skydir(section="", dir="", path="", **kwargs):
if cherrypy.request.params.get('format') is None:
return '<sky><import src="/sky/examples/file-browser.sky"/><file-browser/></sky>'
result = dict()
result['directories'] = []
result['files'] = []
for _, dir_names, file_names in os.walk(path.rstrip(r"\/")):
for dir_name in sorted(dir_names):
result["directories"].append(dir_name)
del dir_names[:] # limit to one level
for file_name in sorted(file_names):
result["files"].append(file_name)
return json.dumps(result)
def main():
parser = argparse.ArgumentParser(description='Sky development server')
parser.add_argument('-v', '--verbose', action='store_true',
help='Enable logging to the console.')
parser.add_argument('app_path', type=str)
parser.add_argument('port', type=int)
configuration.add_arguments(parser)
args = parser.parse_args()
log_dir = os.path.abspath(os.getcwd())
paths = Paths(os.path.join('out', args.configuration))
config = {
'global': {
# Cherrypy appears to just drop requests if it doesn't have
# a thread to service them, so set our thread_pool high enough
# so that a z620 can run all the tests w/o timeouts.
'server.thread_pool': 30,
'server.socket_port': args.port,
'tools.staticdir.content_types' : {
'sky': 'text/sky',
},
'log.screen': args.verbose,
'log.access_log': os.path.join(log_dir, 'access_log.txt'),
# This causes some strange python exception??
# 'log.error_log': os.path.join(log_dir, 'error_log.txt'),
},
'/': {
'tools.staticdir.on': True,
'tools.staticdir.dir': os.path.abspath(args.app_path),
'tools.staticdir.indexlister': skydir,
},
'/mojo/public': {
'tools.staticdir.on': True,
'tools.staticdir.dir': os.path.join(paths.gen_root, 'mojo', 'public'),
},
'/mojo/services': {
'tools.staticdir.on': True,
'tools.staticdir.dir': os.path.join(paths.gen_root, 'mojo', 'services'),
},
'/sky/services': {
'tools.staticdir.on': True,
'tools.staticdir.dir': os.path.join(paths.gen_root, 'sky', 'services'),
},
}
cherrypy.quickstart(config=config)
if __name__ == '__main__':
main()