| Index: chrome/browser/resources/vulcanize_gn.py
|
| diff --git a/chrome/browser/resources/vulcanize_gn.py b/chrome/browser/resources/vulcanize_gn.py
|
| index 309ab32be4bb53533003a2116b68bdb96f1cee12..84954cccae309aa1b7638a8ee2b473c6a4e8bc24 100755
|
| --- a/chrome/browser/resources/vulcanize_gn.py
|
| +++ b/chrome/browser/resources/vulcanize_gn.py
|
| @@ -158,25 +158,44 @@ def _vulcanize(in_folder, args):
|
| # that by adding a <base> tag to the (post-processed) generated output.
|
| output = output.replace('<head>', '<head>' + args.insert_in_head)
|
|
|
| - with tempfile.NamedTemporaryFile(mode='wt+', delete=False) as tmp:
|
| - tmp.write(output)
|
| + crisper_input = tempfile.NamedTemporaryFile(mode='wt+', delete=False)
|
| + crisper_input.write(output)
|
| + crisper_input.close()
|
| +
|
| + crisper_output = tempfile.NamedTemporaryFile(mode='wt+', delete=False)
|
| + crisper_output.close()
|
|
|
| try:
|
| node.RunNode([node_modules.PathToCrisper(),
|
| - '--source', tmp.name,
|
| + '--source', crisper_input.name,
|
| '--script-in-head', 'false',
|
| + '--only-split',
|
| '--html', html_out_path,
|
| - '--js', js_out_path])
|
| -
|
| - # Create an empty JS file if crisper did not create one.
|
| - if not os.path.isfile(js_out_path):
|
| - open(js_out_path, 'w').close()
|
| -
|
| - node.RunNode([node_modules.PathToUglifyJs(), js_out_path,
|
| + '--js', crisper_output.name])
|
| +
|
| + # Crisper by default inserts a <script> tag with the name of the --js file,
|
| + # but since we are using a temporary file, need to manually insert a
|
| + # <script> tag with the correct final filename (in combination with
|
| + # --only-split flag). There is no way currently to manually specify the
|
| + # <script> tag's path, see https://github.com/PolymerLabs/crisper/issues/46.
|
| + with open(html_out_path, 'r+') as f:
|
| + data = f.read()
|
| + new_data = data.replace(
|
| + '</body></html>',
|
| + '<script src="' + args.js_out_file + '"></script></body></html>')
|
| + assert new_data != data, 'Expected to find </body></html> token.'
|
| + f.seek(0)
|
| + f.write(new_data)
|
| + f.truncate()
|
| +
|
| + node.RunNode([node_modules.PathToUglifyJs(), crisper_output.name,
|
| '--comments', '"/Copyright|license|LICENSE|\<\/?if/"',
|
| '--output', js_out_path])
|
| finally:
|
| - os.remove(tmp.name)
|
| + if os.path.exists(crisper_input.name):
|
| + os.remove(crisper_input.name)
|
| + if os.path.exists(crisper_output.name):
|
| + os.remove(crisper_output.name)
|
|
|
|
|
| def main(argv):
|
|
|