| Index: runtime/tools/create_resources.py
|
| diff --git a/runtime/tools/create_resources.py b/runtime/tools/create_resources.py
|
| index 9632b282c42d207fdacc62fdd82639660727da50..27c9d784d4a87a4b27dbc050bc4ecc75c8be6772 100644
|
| --- a/runtime/tools/create_resources.py
|
| +++ b/runtime/tools/create_resources.py
|
| @@ -7,13 +7,14 @@
|
|
|
| import os
|
| import sys
|
| -from os.path import join
|
| +from os.path import join, splitext
|
| import time
|
| from optparse import OptionParser
|
| import re
|
| from datetime import date
|
| +import zlib
|
|
|
| -def makeResources(root_dir, client_dir, input_files, table_name):
|
| +def makeResources(root_dir, client_dir, input_files, table_name, compress, no_compress_extensions):
|
| result = ''
|
| resources = []
|
|
|
| @@ -25,6 +26,10 @@ def makeResources(root_dir, client_dir, input_files, table_name):
|
| resource_file_name = resource_file[ len(client_dir) : ]
|
| else:
|
| resource_file_name = resource_file
|
| + _, ext = os.path.splitext(resource_file)
|
| + if ext in no_compress_extensions:
|
| + # Force no compression for files of this extension.
|
| + compress = None
|
| resource_url = '/%s' % resource_file_name
|
| result += '// %s\n' % resource_file
|
| result += 'const char '
|
| @@ -33,7 +38,10 @@ def makeResources(root_dir, client_dir, input_files, table_name):
|
| result += '[] = {\n '
|
| fileHandle = open(resource_file, 'rb')
|
| lineCounter = 0
|
| - for byte in fileHandle.read():
|
| + file_contents = fileHandle.read()
|
| + if compress:
|
| + file_contents = zlib.compress(file_contents)
|
| + for byte in file_contents:
|
| result += r" '\x%02x'," % ord(byte)
|
| lineCounter += 1
|
| if lineCounter == 10:
|
| @@ -44,7 +52,7 @@ def makeResources(root_dir, client_dir, input_files, table_name):
|
| result += ' 0\n};\n\n'
|
| resource_url_scrubbed = re.sub(r'\\', '/', resource_url)
|
| resources.append(
|
| - (resource_url_scrubbed, resource_name, os.stat(resource_file).st_size));
|
| + (resource_url_scrubbed, resource_name, len(file_contents)));
|
|
|
| # Write the resource table.
|
| result += 'ResourcesEntry __%s_resources_[] = ' % table_name
|
| @@ -57,7 +65,7 @@ def makeResources(root_dir, client_dir, input_files, table_name):
|
|
|
|
|
| def makeFile(output_file, root_dir, client_dir, input_files, outer_namespace,
|
| - inner_namespace, table_name):
|
| + inner_namespace, table_name, compress, no_compress_extensions):
|
| cc_text = '''
|
| // Copyright (c) %d, the Dart project authors. Please see the AUTHORS file
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| @@ -75,7 +83,8 @@ struct ResourcesEntry {
|
| };
|
|
|
| '''
|
| - cc_text += makeResources(root_dir, client_dir, input_files, table_name)
|
| + cc_text += makeResources(root_dir, client_dir, input_files, table_name,
|
| + compress, no_compress_extensions)
|
| cc_text += '\n'
|
| if inner_namespace != None:
|
| cc_text += '} // namespace %s\n' % inner_namespace
|
| @@ -107,6 +116,14 @@ def main(args):
|
| parser.add_option("--client_root",
|
| action="store", type="string",
|
| help="root directory client resources")
|
| + parser.add_option("--compress",
|
| + action="store_true",
|
| + help="zlib compress resources")
|
| + parser.add_option("--no_compress_extensions",
|
| + action="append",
|
| + default=['.dart'],
|
| + help="file extensions that should not be compressed.")
|
| +
|
| (options, args) = parser.parse_args()
|
| if not options.output:
|
| sys.stderr.write('--output not specified\n')
|
| @@ -139,7 +156,8 @@ def main(args):
|
|
|
| if not makeFile(options.output, options.root_prefix, options.client_root,
|
| files, options.outer_namespace, options.inner_namespace,
|
| - options.table_name):
|
| + options.table_name, options.compress,
|
| + options.no_compress_extensions):
|
| return -1
|
|
|
| return 0
|
|
|