run_dev_server.py revision 88448d9ae4dfff1805045790ef5f32495d62abcc
188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown#!/usr/bin/env python 288448d9ae4dfff1805045790ef5f32495d62abccJeff Brown# Copyright (c) 2012 The Chromium Authors. All rights reserved. 388448d9ae4dfff1805045790ef5f32495d62abccJeff Brown# Use of this source code is governed by a BSD-style license that can be 488448d9ae4dfff1805045790ef5f32495d62abccJeff Brown# found in the LICENSE file. 588448d9ae4dfff1805045790ef5f32495d62abccJeff Brownimport optparse 688448d9ae4dfff1805045790ef5f32495d62abccJeff Brownimport os 788448d9ae4dfff1805045790ef5f32495d62abccJeff Brownimport sys 888448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 988448d9ae4dfff1805045790ef5f32495d62abccJeff Brownimport SimpleHTTPServer 1088448d9ae4dfff1805045790ef5f32495d62abccJeff Brownimport BaseHTTPServer 1188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 1288448d9ae4dfff1805045790ef5f32495d62abccJeff Brownfrom build import calcdeps 1388448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 1488448d9ae4dfff1805045790ef5f32495d62abccJeff BrownDEFAULT_PORT = 8003 1588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 1688448d9ae4dfff1805045790ef5f32495d62abccJeff Brownclass Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): 1788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown def do_GET(self): 1888448d9ae4dfff1805045790ef5f32495d62abccJeff Brown if self.path == '/src/deps.js': 1988448d9ae4dfff1805045790ef5f32495d62abccJeff Brown self.log_message('Regenerating deps') 2088448d9ae4dfff1805045790ef5f32495d62abccJeff Brown calcdeps.regenerate_deps() 2188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) 2288448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 2388448d9ae4dfff1805045790ef5f32495d62abccJeff Brownclass Server(BaseHTTPServer.HTTPServer): 2488448d9ae4dfff1805045790ef5f32495d62abccJeff Brown def handle_one_request(self): 2588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown try: 2688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown HTTPServer.handle_one_request(self) 2788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown except KeyboardInterrupt: 2888448d9ae4dfff1805045790ef5f32495d62abccJeff Brown sys.exit(255) 2988448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 3088448d9ae4dfff1805045790ef5f32495d62abccJeff Browndef Main(args): 3188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown parser = optparse.OptionParser() 3288448d9ae4dfff1805045790ef5f32495d62abccJeff Brown parser.add_option('--port', 3388448d9ae4dfff1805045790ef5f32495d62abccJeff Brown action='store', 3488448d9ae4dfff1805045790ef5f32495d62abccJeff Brown type='int', 3588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown default=DEFAULT_PORT, 3688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown help='Port to serve from') 3788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown options, args = parser.parse_args() 3888448d9ae4dfff1805045790ef5f32495d62abccJeff Brown server = Server(('', options.port), Handler) 3988448d9ae4dfff1805045790ef5f32495d62abccJeff Brown sys.stderr.write("Now running on http://localhost:%i\n" % options.port) 4088448d9ae4dfff1805045790ef5f32495d62abccJeff Brown server.serve_forever() 4188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 4288448d9ae4dfff1805045790ef5f32495d62abccJeff Brownif __name__ == '__main__': 4388448d9ae4dfff1805045790ef5f32495d62abccJeff Brown sys.exit(Main(sys.argv[1:])) 44