diff options
author | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-28 18:01:53 +0000 |
---|---|---|
committer | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-28 18:01:53 +0000 |
commit | cbc8bb00bb3bfb522264560f4b3fb29d59e9e200 (patch) | |
tree | e749e94083dcf634876ac8c7ed0df9a09d220717 /remoting/tools | |
parent | ef31ad7478cf1e471cad14d601f84aa564286485 (diff) | |
download | chromium_src-cbc8bb00bb3bfb522264560f4b3fb29d59e9e200.zip chromium_src-cbc8bb00bb3bfb522264560f4b3fb29d59e9e200.tar.gz chromium_src-cbc8bb00bb3bfb522264560f4b3fb29d59e9e200.tar.bz2 |
Add proto files so we can run jscompile on remoting JS files.
BUG=
R=jamiewalch@chromium.org
Review URL: https://codereview.chromium.org/130423010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247466 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/tools')
-rwxr-xr-x | remoting/tools/htmlcompile.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/remoting/tools/htmlcompile.py b/remoting/tools/htmlcompile.py new file mode 100755 index 0000000..9fcb5a7 --- /dev/null +++ b/remoting/tools/htmlcompile.py @@ -0,0 +1,79 @@ +#!/usr/bin/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 +from HTMLParser import HTMLParser +import subprocess +import sys +import os + +DESCRIPTION = '''Extract the <script> tags from the specified html file and +run them through jscompile, along with any additional JS files specified.''' +FILES_HELP = '''A list of HTML or Javascript files. The Javascript files should +contain definitions of types or functions that are known to Chrome but not to +jscompile; they are added to the list of <script> tags found in each of the +HTML files.''' +STAMP_HELP = 'Timestamp file to update on success.' + +class ScriptTagParser(HTMLParser): + def __init__(self): + HTMLParser.__init__(self) + self.scripts = [] + + def handle_starttag(self, tag, attrs): + if tag == 'script': + for (name, value) in attrs: + if name == 'src': + self.scripts.append(value) + + +def parseHtml(html_file, js_proto_files): + src_dir = os.path.split(html_file)[0] + f = open(html_file, 'r') + html = f.read() + parser = ScriptTagParser(); + parser.feed(html) + scripts = [] + for script in parser.scripts: + # Ignore non-local scripts + if not '://' in script: + scripts.append(os.path.join(src_dir, script)) + + args = ['jscompile'] + scripts + js_proto_files + result = subprocess.call(args) + return result == 0 + + +def main(): + parser = argparse.ArgumentParser(description = DESCRIPTION) + parser.add_argument('files', nargs = '+', help = FILES_HELP) + parser.add_argument('--success-stamp', dest = 'success_stamp', + help = STAMP_HELP) + options = parser.parse_args() + + html = [] + js = [] + for file in options.files: + name, extension = os.path.splitext(file) + if extension == '.html': + html.append(file) + elif extension == '.js': + js.append(file) + else: + print >> sys.stderr, 'Unknown extension (' + extension + ') for ' + file + return 1 + + for html_file in html: + if not parseHtml(html_file, js): + return 1 + + if options.success_stamp: + with open(options.success_stamp, 'w'): + os.utime(options.success_stamp, None) + + return 0 + +if __name__ == '__main__': + sys.exit(main()) |