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

Side by Side Diff: chrome/browser/resources/settings/flatten_settings.py

Issue 1870853003: Vulcanize settings (hacky and dirty, don't use) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git squash commit. Created 4 years, 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/python
2 # Copyright 2016 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Runs grit to flatten resources from settings_resources.grd into a temporary
7 directory for use by vulcanize/crisper.
8 """
9 import os
10 import re
11 import shutil
12 import subprocess
13 import sys
14 import tempfile
15
16 _HERE_PATH = os.path.join(os.path.dirname(__file__))
17 _SRC_PATH = os.path.normpath(os.path.join(_HERE_PATH, '..', '..', '..', '..'))
18 _POLYMER_PATH = os.path.join(
19 _SRC_PATH, 'third_party', 'polymer', 'v1_0', 'components-chromium')
20
21 def flatten(target_os='linux'):
22 wrap_grd()
23
24 sys.path.append(os.path.join(_SRC_PATH, 'tools', 'grit'))
25 from grit.format import data_pack
26 from grit.tool import build
27 from grit import grit_runner
28
29 options=grit_runner.Options()
30 options.input = os.path.join(_HERE_PATH, 'settings_resources.grd')
31
32 temp_dir = tempfile.mkdtemp()
33 flattened_dir = tempfile.mkdtemp()
34 try:
35 builder = build.RcBuilder()
36 if target_os == 'linux' or target_os == 'chromeos':
37 target = 'linux2';
38 elif target_os == 'windows':
39 raise Error('Not working yet. Use linux or chromeos on a Linux device.')
40 target = 'win32';
41 elif target_os == 'mac':
42 raise Error('Not working yet. Use linux or chromeos on a Linux device.')
43 target = 'darwin';
44 else:
45 raise Exception('Invalid target OS: %s' % target_os)
46
47 args = ['-o', temp_dir, '-t', target_os]
48 if target_os == 'chromeos':
49 args.extend(['-D', 'chromeos'])
50
51 builder.Run(options, args)
52
53 resource_ids = dict()
54 resources_path = os.path.join(temp_dir, 'grit', 'settings_resources.h')
55 with open(resources_path) as resources_file:
56 for line in resources_file:
57 res = re.match('#define ([^ ]+) (\d+)', line)
58 if res:
59 resource_ids[int(res.group(2))] = res.group(1)
60
61 resource_filenames = dict()
62 resources_map_path = os.path.join(temp_dir, 'grit', 'settings_resources_map. cc')
63 with open(resources_map_path) as resources_map:
64 for line in resources_map:
65 res = re.match(' {"([^"]+)", ([^}]+)', line)
66 if res:
67 resource_filenames[res.group(2)] = res.group(1)
68
69 resources_pak_path = os.path.join(temp_dir, 'settings_resources.pak')
70 data = data_pack.DataPack.ReadDataPack(resources_pak_path)
71
72 for (resource_id, text) in data.resources.iteritems():
73 filename = resource_filenames[resource_ids[resource_id]]
74 dirname = os.path.join(flattened_dir, os.path.dirname(filename))
75 if not os.path.exists(dirname):
76 os.makedirs(dirname)
77 with open(os.path.join(flattened_dir, filename), 'w') as file:
78 file.write(text)
79 except:
80 print "Error: ", sys.exc_info()[0]
81 shutil.rmtree(flattened_dir)
82 flattened_dir = None
83 finally:
84 shutil.rmtree(temp_dir)
85 return flattened_dir
86
87
88 def wrap_grd():
89 grd_filename = os.path.join(_HERE_PATH, 'settings_resources.grd')
90 with open(grd_filename) as grd_file:
91 grd_text = grd_file.read();
92
93 if 'use_vulcanize' in grd_text:
94 return
95
96 new_grd_texts = []
97
98 start_tag = '<structures>'
99 start_tag_index = grd_text.index(start_tag)
100 new_grd_texts.append(grd_text[:start_tag_index])
101 new_grd_texts.append(start_tag)
102
103 new_grd_texts.append("""
104 <if expr="use_vulcanize">
105 <structure name="IDR_SETTINGS_VULCANIZED_HTML"
106 file="vulcanized.html"
107 type="chrome_html" />
108 <structure name="IDR_SETTINGS_CRISPER_JS"
109 file="crisper.js"
110 flattenhtml="true"
111 type="chrome_html" />
112 </if>
113 <if expr="not use_vulcanize">""")
114
115 end_tag = '</structures>'
116 end_tag_index = grd_text.index(end_tag)
117 new_grd_texts.append(grd_text[start_tag_index + len(start_tag):end_tag_index])
118 new_grd_texts.append("""</if>
119 """)
120 new_grd_texts.append(grd_text[end_tag_index:])
121
122 with open(grd_filename, 'w') as grd_file:
123 grd_file.write(''.join(new_grd_texts))
124
125
126 def main():
127 print flatten()
128
129
130 if __name__ == '__main__':
131 main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698