Chromium Code Reviews| Index: Source/devtools/scripts/concatenate_module_scripts.py |
| diff --git a/Source/devtools/scripts/concatenate_module_scripts.py b/Source/devtools/scripts/concatenate_module_scripts.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..258063fec4cc555f4c75167d6e286ba6937abd6f |
| --- /dev/null |
| +++ b/Source/devtools/scripts/concatenate_module_scripts.py |
| @@ -0,0 +1,84 @@ |
| +#!/usr/bin/env 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. |
| + |
| +""" |
| +Concatenates module scripts based on the module.json descriptor. |
| +Optionally, minifies the result using rjsmin. |
| +""" |
| + |
| +from cStringIO import StringIO |
| +from os import path |
| +import os |
| +import re |
| +import sys |
| + |
| +try: |
| + import simplejson as json |
| +except ImportError: |
| + import json |
| + |
| +rjsmin_path = path.abspath(path.join( |
| + path.dirname(__file__), |
| + '..', |
| + '..', |
| + 'build', |
| + 'scripts')) |
| +sys.path.append(rjsmin_path) |
| +import rjsmin |
| + |
| + |
| +def read_file(filename): |
| + with open(path.normpath(filename), 'rt') as file: |
| + return file.read() |
| + |
| + |
| +def write_file(filename, content): |
| + if path.exists(filename): |
|
lushnikov
2014/08/15 14:23:13
lets add comment regarding hardlink
apavlov
2014/08/15 14:54:46
Done.
|
| + os.remove(filename) |
| + with open(filename, 'wt') as file: |
| + file.write(content) |
| + |
| + |
| +def concatenate_scripts(file_names, module_dir, output_dir, output): |
| + for file_name in file_names: |
| + output.write('/* %s */\n' % file_name) |
| + file_path = path.join(module_dir, file_name) |
| + if not path.isfile(file_path): |
|
lushnikov
2014/08/15 14:23:13
lets clarify this
apavlov
2014/08/15 14:54:46
Done.
|
| + file_path = path.join(output_dir, path.basename(module_dir), file_name) |
| + output.write(read_file(file_path)) |
| + output.write(';') |
| + |
| + |
| +def main(argv): |
| + if len(argv) < 3: |
| + print('Usage: %s module_json output_file no_minify' % argv[0]) |
| + return 1 |
| + |
| + module_json_file_name = argv[1] |
| + output_file_name = argv[2] |
| + no_minify = len(argv) > 3 and argv[3] |
| + module_dir = path.dirname(module_json_file_name) |
| + |
| + output = StringIO() |
| + descriptor = None |
| + try: |
| + descriptor = json.loads(read_file(module_json_file_name)) |
| + except: |
| + print 'ERROR: Failed to load JSON from ' + module_json_file_name |
| + raise |
| + |
| + # pylint: disable=E1103 |
| + scripts = descriptor.get('scripts') |
| + if scripts: |
|
lushnikov
2014/08/15 14:23:13
assert(scripts)
apavlov
2014/08/15 14:54:46
Done.
|
| + output_root_dir = path.join(path.dirname(output_file_name), '..') |
| + concatenate_scripts(scripts, module_dir, output_root_dir, output) |
| + |
| + output_script = output.getvalue() |
| + output.close() |
| + write_file(output_file_name, output_script if no_minify else rjsmin.jsmin(output_script)) |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main(sys.argv)) |