| Index: tools/polymer/generate_compiled_resources_gn.py
|
| diff --git a/tools/polymer/generate_compiled_resources_gn.py b/tools/polymer/generate_compiled_resources_gn.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..7a3e4d646d93905d08793d1b9b265617633f5262
|
| --- /dev/null
|
| +++ b/tools/polymer/generate_compiled_resources_gn.py
|
| @@ -0,0 +1,93 @@
|
| +#!/usr/bin/env python
|
| +# Copyright 2016 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.
|
| +
|
| +from bs4 import BeautifulSoup
|
| +from datetime import date
|
| +import os.path as path
|
| +from subprocess import call
|
| +import sys
|
| +
|
| +
|
| +_SRC = path.join(path.dirname(path.abspath(__file__)), '..', '..')
|
| +_COMPILE_JS = path.join(
|
| + _SRC, 'third_party', 'closure_compiler', 'compile_js2.gypi')
|
| +_POLYMERS = ['polymer%s.html' % p for p in '', '-mini', '-micro']
|
| +_WEB_ANIMATIONS_BASE = 'web-animations.html'
|
| +_WEB_ANIMATIONS_TARGET = 'web_animations.js'
|
| +_COMPILED_RESOURCES_TEMPLATE = '''
|
| +# Copyright %d 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.
|
| +#
|
| +# NOTE: Created with %s, please do not edit.
|
| +
|
| +import("//third_party/closure_compiler/compile_js2.gni")
|
| +
|
| +%s
|
| +
|
| +'''.strip()
|
| +
|
| +
|
| +def main(created_by, html_files):
|
| + targets = ''
|
| +
|
| + def _target_name(target_file):
|
| + assert target_file.endswith('.html')
|
| + return path.basename(target_file)[:-len('.html')] + '-extracted'
|
| +
|
| + for html_file in sorted(html_files, key=_target_name):
|
| + html_base = path.basename(html_file)
|
| + if html_base in _POLYMERS:
|
| + continue
|
| +
|
| + parsed = BeautifulSoup(open(html_file), 'html.parser')
|
| + imports = set(i.get('href') for i in parsed.find_all('link', rel='import'))
|
| +
|
| + html_dir = path.dirname(html_file)
|
| + dependencies = []
|
| + externs = []
|
| +
|
| + for html_import in sorted(imports):
|
| + import_dir, import_base = path.split(html_import.encode('ascii'))
|
| + if import_base in _POLYMERS:
|
| + continue
|
| +
|
| + if import_base == _WEB_ANIMATIONS_BASE:
|
| + externs.append(_WEB_ANIMATIONS_TARGET)
|
| + continue
|
| +
|
| + target = _target_name(import_base)
|
| + if not path.isfile(path.join(html_dir, import_dir, target + '.js')):
|
| + continue
|
| +
|
| + target = ':compile_' + target
|
| +
|
| + dependencies.append(import_dir + target)
|
| +
|
| + targets += '\ncompile_js("compile_%s-extracted") {' % html_base[:-5]
|
| + targets += '\nsource_files = ["%s-extracted.js"]' % html_base[:-5]
|
| + if dependencies:
|
| + targets += "\ndeps = ["
|
| + targets += '\n "%s",' % '",\n "'.join(dependencies)
|
| + targets += '\n ]'
|
| + if externs:
|
| + targets += "\nexterns = ["
|
| + targets += '\n "%s",' % '",\n "'.join(externs)
|
| + targets += '\n ]'
|
| + targets += "\n}"
|
| +
|
| +
|
| + targets = targets.strip()
|
| +
|
| + if targets:
|
| + current_year = date.today().year
|
| + build_gn_path = path.join(html_dir, 'BUILD.gn')
|
| + print build_gn_path
|
| + with open(build_gn_path, 'w') as build_gn:
|
| + build_gn.write(_COMPILED_RESOURCES_TEMPLATE % (current_year, created_by, targets))
|
| + call(['gn', 'format', build_gn_path])
|
| +
|
| +if __name__ == '__main__':
|
| + main(path.basename(sys.argv[0]), sys.argv[1:])
|
|
|