1 #!/usr/bin/env python 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 import optparse 6 import os 7 import sys 8 import time 9 10 import SimpleHTTPServer 11 import BaseHTTPServer 12 13 from build import calcdeps 14 15 DEFAULT_PORT = 8003 16 DEPS_CHECK_DELAY = 5 17 18 class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): 19 def do_GET(self): 20 if self.path == '/src/deps.js': 21 current_time = time.time() 22 if self.server.next_deps_check < current_time: 23 self.log_message('Regenerating deps') 24 self.server.next_deps_check = current_time + DEPS_CHECK_DELAY 25 calcdeps.regenerate_deps() 26 return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) 27 28 class Server(BaseHTTPServer.HTTPServer): 29 def __init__(self, *args, **kwargs): 30 BaseHTTPServer.HTTPServer.__init__(self, *args, **kwargs) 31 self.next_deps_check = -1 32 33 def Main(args): 34 parser = optparse.OptionParser() 35 parser.add_option('--port', 36 action='store', 37 type='int', 38 default=DEFAULT_PORT, 39 help='Port to serve from') 40 options, args = parser.parse_args() 41 server = Server(('', options.port), Handler) 42 sys.stderr.write("Now running on http://localhost:%i\n" % options.port) 43 server.serve_forever() 44 45 if __name__ == '__main__': 46 sys.exit(Main(sys.argv[1:])) 47