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

Side by Side Diff: remoting/webapp/build-html.py

Issue 498773005: Add some remoting targets to GN build. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « remoting/webapp/BUILD.gn ('k') | ui/wm/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Builds the complete main.html file from the basic components. 6 """Builds the complete main.html file from the basic components.
7 """ 7 """
8 8
9 from HTMLParser import HTMLParser 9 from HTMLParser import HTMLParser
10 import argparse 10 import argparse
(...skipping 14 matching lines...) Expand all
25 25
26 def handle_starttag(self, tag, attrs): 26 def handle_starttag(self, tag, attrs):
27 for (name, value) in attrs: 27 for (name, value) in attrs:
28 if name == 'id': 28 if name == 'id':
29 if value in self.ids: 29 if value in self.ids:
30 error('Duplicate id: %s' % value) 30 error('Duplicate id: %s' % value)
31 self.ids.add(value) 31 self.ids.add(value)
32 32
33 33
34 class GenerateWebappHtml: 34 class GenerateWebappHtml:
35 def __init__(self, template_files, js_files, instrumented_js_files): 35 def __init__(self, template_files, js_files, instrumented_js_files,
36 template_rel_dir):
36 37
37 self.js_files = js_files 38 self.js_files = js_files
38 self.instrumented_js_files = instrumented_js_files 39 self.instrumented_js_files = instrumented_js_files
39 40 self.template_rel_dir = template_rel_dir
40 41
41 self.templates_expected = set() 42 self.templates_expected = set()
42 for template in template_files: 43 for template in template_files:
43 self.templates_expected.add(os.path.basename(template)) 44 self.templates_expected.add(os.path.basename(template))
44 45
45 self.templates_found = set() 46 self.templates_found = set()
46 47
47 def includeJavascript(self, output): 48 def includeJavascript(self, output):
48 for js_path in sorted(self.js_files): 49 for js_path in sorted(self.js_files):
49 js_file = os.path.basename(js_path) 50 js_file = os.path.basename(js_path)
(...skipping 12 matching lines...) Expand all
62 return True 63 return True
63 64
64 def validateTemplate(self, template_path): 65 def validateTemplate(self, template_path):
65 template = os.path.basename(template_path) 66 template = os.path.basename(template_path)
66 if template in self.templates_expected: 67 if template in self.templates_expected:
67 self.templates_found.add(template) 68 self.templates_found.add(template)
68 return True 69 return True
69 return False 70 return False
70 71
71 def processTemplate(self, output, template_file, indent): 72 def processTemplate(self, output, template_file, indent):
72 with open(template_file, 'r') as input_template: 73 with open(os.path.join(self.template_rel_dir, template_file), 'r') as \
74 input_template:
73 first_line = True 75 first_line = True
74 skip_header_comment = False 76 skip_header_comment = False
75 77
76 for line in input_template: 78 for line in input_template:
77 # If the first line is the start of a copyright notice, then 79 # If the first line is the start of a copyright notice, then
78 # skip over the entire comment. 80 # skip over the entire comment.
79 # This will remove the copyright info from the included files, 81 # This will remove the copyright info from the included files,
80 # but leave the one on the main template. 82 # but leave the one on the main template.
81 if first_line and re.match(r'<!--', line): 83 if first_line and re.match(r'<!--', line):
82 skip_header_comment = True 84 skip_header_comment = True
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 parser.add_argument( 123 parser.add_argument(
122 '--exclude-js', 124 '--exclude-js',
123 nargs='*', 125 nargs='*',
124 default=[], 126 default=[],
125 help='The Javascript files to exclude from <--js> and <--instrumentedjs>') 127 help='The Javascript files to exclude from <--js> and <--instrumentedjs>')
126 parser.add_argument( 128 parser.add_argument(
127 '--instrument-js', 129 '--instrument-js',
128 nargs='*', 130 nargs='*',
129 default=[], 131 default=[],
130 help='Javascript to include and instrument for code coverage') 132 help='Javascript to include and instrument for code coverage')
133 parser.add_argument(
134 '--dir-for-templates',
135 default = ".",
136 help='Directory template references in html are relative to')
131 parser.add_argument('output_file') 137 parser.add_argument('output_file')
132 parser.add_argument('input_template') 138 parser.add_argument('input_template')
133 return parser.parse_args(sys.argv[1:]) 139 return parser.parse_args(sys.argv[1:])
134 140
135 141
136 def main(): 142 def main():
137 args = parseArgs() 143 args = parseArgs()
138 144
139 out_file = args.output_file 145 out_file = args.output_file
140 js_files = set(args.js) - set(args.exclude_js) 146 js_files = set(args.js) - set(args.exclude_js)
141 147
142 # Create the output directory if it does not exist. 148 # Create the output directory if it does not exist.
143 out_directory = os.path.dirname(out_file) 149 out_directory = os.path.dirname(out_file)
144 if not os.path.exists(out_directory): 150 if not os.path.exists(out_directory):
145 os.makedirs(out_directory) 151 os.makedirs(out_directory)
146 152
147 # Generate the main HTML file from the templates. 153 # Generate the main HTML file from the templates.
148 with open(out_file, 'w') as output: 154 with open(out_file, 'w') as output:
149 gen = GenerateWebappHtml(args.templates, js_files, args.instrument_js) 155 gen = GenerateWebappHtml(args.templates, js_files, args.instrument_js,
156 args.dir_for_templates)
150 gen.processTemplate(output, args.input_template, 0) 157 gen.processTemplate(output, args.input_template, 0)
151 158
152 # Verify that all the expected templates were found. 159 # Verify that all the expected templates were found.
153 if not gen.verifyTemplateList(): 160 if not gen.verifyTemplateList():
154 error('Extra templates specified') 161 error('Extra templates specified')
155 162
156 # Verify that the generated HTML file is valid. 163 # Verify that the generated HTML file is valid.
157 with open(out_file, 'r') as input_html: 164 with open(out_file, 'r') as input_html:
158 parser = HtmlChecker() 165 parser = HtmlChecker()
159 parser.feed(input_html.read()) 166 parser.feed(input_html.read())
160 167
161 168
162 if __name__ == '__main__': 169 if __name__ == '__main__':
163 sys.exit(main()) 170 sys.exit(main())
OLDNEW
« no previous file with comments | « remoting/webapp/BUILD.gn ('k') | ui/wm/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698