mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Turns out that the /sky mapping to the gen directory was interfering with our new pattern of mapping the actual /sky directory. So now we use a more restrictive mapping pattern of only mapping /sky/services, similar for /mojo/services and /mojo/public. Fixed an exception of not finding _sky_server when a custom sky_server was already running. R=abarth@chromium.org Review URL: https://codereview.chromium.org/692163002
86 lines
2.9 KiB
Python
Executable File
86 lines
2.9 KiB
Python
Executable File
#!/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 os
|
|
import cherrypy
|
|
import staticdirindex
|
|
|
|
|
|
BUILD_DIRECTORY = 'out'
|
|
CONFIG_DIRECTORY = 'Debug'
|
|
SRC_ROOT = os.path.abspath(os.path.join(__file__, os.pardir, os.pardir,
|
|
os.pardir))
|
|
SKY_ROOT = os.path.join(SRC_ROOT, 'sky')
|
|
GEN_ROOT = os.path.join(SRC_ROOT, BUILD_DIRECTORY, CONFIG_DIRECTORY, 'gen')
|
|
|
|
|
|
# FIXME: This should be replaced by just json and inflated into DOM client-side.
|
|
def skydir(section="", dir="", path="", **kwargs):
|
|
url = "%s%s" % (cherrypy.request.headers.get('Host', ''),
|
|
cherrypy.request.path_info)
|
|
sky = "<listing>"
|
|
sky += "<style>a { display: block; }"
|
|
sky += "header { border-bottom: 1px solid lightgrey }</style>"
|
|
sky += '<header>Listing for: <a href="' + url + '">' + url +'</a></header>'
|
|
for _, dir_names, file_names in os.walk(path.rstrip(r"\/")):
|
|
for dir_name in sorted(dir_names):
|
|
sky += "<a href=\"%s/\">%s/</a>\n" % (dir_name, dir_name)
|
|
|
|
del dir_names[:] # limit to one level
|
|
|
|
for file_name in sorted(file_names):
|
|
sky += "<a href=\"%s\">%s</a>\n" % (file_name, file_name)
|
|
return sky + "</listing>"
|
|
|
|
|
|
# FIXME: This doesn't yet support directory listings. We'll do something like:
|
|
# http://tools.cherrypy.org/wiki/staticdirindex
|
|
# but have it spit .sky instead of HTML
|
|
|
|
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)
|
|
args = parser.parse_args()
|
|
|
|
log_dir = os.path.abspath(os.getcwd())
|
|
print "%s logging to access_log.txt in %s" % (
|
|
parser.prog, log_dir)
|
|
|
|
config = {
|
|
'global': {
|
|
'server.socket_port': args.port,
|
|
'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(GEN_ROOT, 'mojo', 'public'),
|
|
},
|
|
'/mojo/services': {
|
|
'tools.staticdir.on': True,
|
|
'tools.staticdir.dir': os.path.join(GEN_ROOT, 'mojo', 'services'),
|
|
},
|
|
'/sky/services': {
|
|
'tools.staticdir.on': True,
|
|
'tools.staticdir.dir': os.path.join(GEN_ROOT, 'sky', 'services'),
|
|
},
|
|
}
|
|
cherrypy.quickstart(config=config)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|