Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Unified Diff: tools/polymer/generate_compiled_resources_gn.py

Issue 2247353004: GN files for running Closure Compiler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add script to generate polymer gn files Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/jstemplate/BUILD.gn ('k') | ui/webui/resources/js/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:])
« no previous file with comments | « third_party/jstemplate/BUILD.gn ('k') | ui/webui/resources/js/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698