Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3252)

Unified Diff: chrome/browser/resources/vulcanize_gn.py

Issue 2915393002: vulcanize_gn.py: Stop writing twice to the declared GN output file. (Closed)
Patch Set: Nits. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/vulcanize_gn_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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):
« no previous file with comments | « no previous file | chrome/browser/resources/vulcanize_gn_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698