| #!/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 |
| 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"] |
| _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. |
| { |
| 'targets': [ |
| %s |
| ], |
| } |
| """.strip() |
| |
| |
| def main(created_by, html_files): |
| targets = "" |
| |
| for html_file in html_files: |
| 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 = [] |
| |
| for html_import in sorted(imports): |
| import_dir, import_base = path.split(html_import.encode("ascii")) |
| if import_base in _POLYMERS: |
| continue |
| |
| target = import_base[:-5] + "-extracted" |
| if not path.isfile(path.join(html_dir, import_dir, target + ".js")): |
| continue |
| |
| if import_dir: |
| target = "compiled_resources2.gyp:" + target |
| |
| dependencies.append(path.join(import_dir, target)) |
| |
| path_to_compile_js = path.relpath(_COMPILE_JS, html_dir) |
| |
| targets += "\n {" |
| targets += "\n 'target_name': '%s-extracted'," % html_base[:-5] |
| if dependencies: |
| targets += "\n 'dependencies': [" |
| targets += "\n '%s'," % "',\n '".join(dependencies) |
| targets += "\n ]," |
| targets += "\n 'includes': ['%s']," % path_to_compile_js |
| targets += "\n }," |
| |
| targets = targets.strip() |
| |
| if targets: |
| current_year = date.today().year |
| print _COMPILED_RESOURCES_TEMPLATE % (current_year, created_by, targets) |
| |
| |
| if __name__ == "__main__": |
| main(path.basename(sys.argv[0]), sys.argv[1:]) |