Index: third_party/WebKit/Source/devtools/scripts/build_debug_applications.py |
diff --git a/third_party/WebKit/Source/devtools/scripts/build_debug_applications.py b/third_party/WebKit/Source/devtools/scripts/build_debug_applications.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..42a638968f86fd2088cfb77b33eb98fd831cde56 |
--- /dev/null |
+++ b/third_party/WebKit/Source/devtools/scripts/build_debug_applications.py |
@@ -0,0 +1,92 @@ |
+#!/usr/bin/env python |
+# -*- coding: UTF-8 -*- |
+# |
+# 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. |
+ |
+""" |
+Builds applications in debug mode: |
+- Copies the module directories into their destinations. |
+- Copies app.html as-is. |
+""" |
+ |
+from os import path |
+from os.path import join |
+import modular_build |
+import os |
+import shutil |
+import sys |
+ |
+ |
+def main(argv): |
+ try: |
+ input_path_flag_index = argv.index('--input_path') |
+ input_path = argv[input_path_flag_index + 1] |
+ output_path_flag_index = argv.index('--output_path') |
+ output_path = argv[output_path_flag_index + 1] |
+ application_names = argv[1:input_path_flag_index] |
+ except: |
+ print('Usage: %s app_1 app_2 ... app_N --input_path <input_path> --output_path <output_path>' % argv[0]) |
+ raise |
+ |
+ loader = modular_build.DescriptorLoader(input_path) |
+ for app in application_names: |
+ descriptors = loader.load_application(app + '.json') |
+ builder = DebugBuilder(app, descriptors, input_path, output_path) |
+ builder.build_app() |
+ |
+ |
+def symlink_or_copy_file(src, dest, safe=False): |
+ if safe and path.exists(dest): |
+ os.remove(dest) |
+ if hasattr(os, 'symlink'): |
+ os.symlink(src, dest) |
+ else: |
+ shutil.copy(src, dest) |
+ |
+ |
+def symlink_or_copy_dir(src, dest): |
+ if path.exists(dest): |
+ shutil.rmtree(dest) |
+ for src_dir, dirs, files in os.walk(src): |
+ subpath = path.relpath(src_dir, src) |
+ dest_dir = path.normpath(join(dest, subpath)) |
+ os.mkdir(dest_dir) |
+ for name in files: |
+ src_name = join(os.getcwd(), src_dir, name) |
+ dest_name = join(dest_dir, name) |
+ symlink_or_copy_file(src_name, dest_name) |
+ |
+ |
+# Outputs: |
+# <app_name>.html as-is |
+# <app_name>.js as-is |
+# <module_name>/<all_files> |
+class DebugBuilder(object): |
+ def __init__(self, application_name, descriptors, application_dir, output_dir): |
+ self.application_name = application_name |
+ self.descriptors = descriptors |
+ self.application_dir = application_dir |
+ self.output_dir = output_dir |
+ |
+ def app_file(self, extension): |
+ return self.application_name + '.' + extension |
+ |
+ def build_app(self): |
+ if self.descriptors.has_html: |
+ self._build_html() |
+ for filename in os.listdir(self.application_dir): |
+ src = join(os.getcwd(), self.application_dir, filename) |
+ if os.path.isdir(src): |
+ symlink_or_copy_dir(src, join(self.output_dir, filename)) |
+ else: |
+ symlink_or_copy_file(src, join(self.output_dir, filename), safe=True) |
+ |
+ def _build_html(self): |
+ html_name = self.app_file('html') |
+ symlink_or_copy_file(join(os.getcwd(), self.application_dir, html_name), join(self.output_dir, html_name), True) |
+ |
+ |
+if __name__ == '__main__': |
+ sys.exit(main(sys.argv)) |