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

Side by Side Diff: build/android/gyp/jinja_template.py

Issue 2362613002: generate_gradle.py: Allow multiple --target and add --all (Closed)
Patch Set: comments, docs, & default targets Created 4 years, 2 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
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2014 The Chromium Authors. All rights reserved. 3 # Copyright 2014 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Renders one or more template files using the Jinja template engine.""" 7 """Renders one or more template files using the Jinja template engine."""
8 8
9 import codecs 9 import codecs
10 import argparse 10 import argparse
(...skipping 26 matching lines...) Expand all
37 """Allows easy rendering of jinja templates with input file tracking.""" 37 """Allows easy rendering of jinja templates with input file tracking."""
38 def __init__(self, loader_base_dir, variables=None): 38 def __init__(self, loader_base_dir, variables=None):
39 self.loader_base_dir = loader_base_dir 39 self.loader_base_dir = loader_base_dir
40 self.variables = variables 40 self.variables = variables
41 self.loader = _RecordingFileSystemLoader(loader_base_dir) 41 self.loader = _RecordingFileSystemLoader(loader_base_dir)
42 self.env = jinja2.Environment(loader=self.loader) 42 self.env = jinja2.Environment(loader=self.loader)
43 self.env.undefined = jinja2.StrictUndefined 43 self.env.undefined = jinja2.StrictUndefined
44 self.env.line_comment_prefix = '##' 44 self.env.line_comment_prefix = '##'
45 self.env.trim_blocks = True 45 self.env.trim_blocks = True
46 self.env.lstrip_blocks = True 46 self.env.lstrip_blocks = True
47 self._template_cache = {} # Map of path -> Template
47 48
48 def Render(self, input_filename, variables=None): 49 def Render(self, input_filename, variables=None):
49 input_rel_path = os.path.relpath(input_filename, self.loader_base_dir) 50 input_rel_path = os.path.relpath(input_filename, self.loader_base_dir)
50 template = self.env.get_template(input_rel_path) 51 template = self._template_cache.get(input_rel_path)
52 if not template:
53 template = self.env.get_template(input_rel_path)
54 self._template_cache[input_rel_path] = template
51 return template.render(variables or self.variables) 55 return template.render(variables or self.variables)
52 56
53 def GetLoadedTemplates(self): 57 def GetLoadedTemplates(self):
54 return list(self.loader.loaded_templates) 58 return list(self.loader.loaded_templates)
55 59
56 60
57 def _ProcessFile(processor, input_filename, output_filename): 61 def _ProcessFile(processor, input_filename, output_filename):
58 output = processor.Render(input_filename) 62 output = processor.Render(input_filename)
59 with codecs.open(output_filename, 'w', 'utf-8') as output_file: 63 with codecs.open(output_filename, 'w', 'utf-8') as output_file:
60 output_file.write(output) 64 output_file.write(output)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 options.outputs_zip) 132 options.outputs_zip)
129 133
130 if options.depfile: 134 if options.depfile:
131 output = options.output or options.outputs_zip 135 output = options.output or options.outputs_zip
132 deps = processor.GetLoadedTemplates() 136 deps = processor.GetLoadedTemplates()
133 build_utils.WriteDepfile(options.depfile, output, deps) 137 build_utils.WriteDepfile(options.depfile, output, deps)
134 138
135 139
136 if __name__ == '__main__': 140 if __name__ == '__main__':
137 main() 141 main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698