OLD | NEW |
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 """A tool to scan source files for unneeded grit includes.""" | 6 """A tool to scan source files for unneeded grit includes.""" |
7 | 7 |
8 import os | 8 import os |
9 import sys | 9 import sys |
10 import xml.etree.ElementTree | 10 import xml.etree.ElementTree |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 grd_file: The file that contains the XML tree. | 71 grd_file: The file that contains the XML tree. |
72 | 72 |
73 Returns: | 73 Returns: |
74 A list of resource names. | 74 A list of resource names. |
75 """ | 75 """ |
76 root = tree.getroot() | 76 root = tree.getroot() |
77 assert root.tag == 'grit' | 77 assert root.tag == 'grit' |
78 release_node = FindNodeWithTag(root, 'release') | 78 release_node = FindNodeWithTag(root, 'release') |
79 assert release_node != None | 79 assert release_node != None |
80 | 80 |
81 messages_node = FindNodeWithTag(root, 'messages') | 81 messages_node = FindNodeWithTag(release_node, 'messages') |
82 messages = set() | 82 messages = set() |
83 if messages_node != None: | 83 if messages_node != None: |
84 messages = set(GetResourcesForNode(messages_node, grd_file, 'message')) | 84 messages = set(GetResourcesForNode(messages_node, grd_file, 'message')) |
85 | 85 |
86 includes_node = FindNodeWithTag(root, 'includes') | 86 includes_node = FindNodeWithTag(release_node, 'includes') |
87 includes = set() | 87 includes = set() |
88 if includes_node != None: | 88 if includes_node != None: |
89 includes = set(GetResourcesForNode(includes_node, grd_file, 'include')) | 89 includes = set(GetResourcesForNode(includes_node, grd_file, 'include')) |
90 return messages.union(includes) | 90 return messages.union(includes) |
91 | 91 |
92 | 92 |
93 def GetOutputFileForNode(node): | 93 def GetOutputFileForNode(node): |
94 """Find the output file starting from a given node. | 94 """Find the output file starting from a given node. |
95 | 95 |
96 Args: | 96 Args: |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 return 1 | 173 return 1 |
174 grd_file = argv[1] | 174 grd_file = argv[1] |
175 dirs_to_scan = argv[2:] | 175 dirs_to_scan = argv[2:] |
176 for f in dirs_to_scan: | 176 for f in dirs_to_scan: |
177 if not os.path.exists(f): | 177 if not os.path.exists(f): |
178 print 'Error: %s does not exist' % f | 178 print 'Error: %s does not exist' % f |
179 return 1 | 179 return 1 |
180 | 180 |
181 tree = xml.etree.ElementTree.parse(grd_file) | 181 tree = xml.etree.ElementTree.parse(grd_file) |
182 grit_header = GetOutputHeaderFile(tree) | 182 grit_header = GetOutputHeaderFile(tree) |
| 183 if not grit_header: |
| 184 print 'Error: %s does not generate any output headers.' % grit_header |
| 185 return 1 |
183 resources = GetResourcesForGrdFile(tree, grd_file) | 186 resources = GetResourcesForGrdFile(tree, grd_file) |
184 | 187 |
185 files_with_unneeded_grit_includes = [] | 188 files_with_unneeded_grit_includes = [] |
186 for dir_to_scan in dirs_to_scan: | 189 for dir_to_scan in dirs_to_scan: |
187 for root, dirs, files in os.walk(dir_to_scan): | 190 for root, dirs, files in os.walk(dir_to_scan): |
188 if '.git' in dirs: | 191 if '.git' in dirs: |
189 dirs.remove('.git') | 192 dirs.remove('.git') |
190 full_paths = [os.path.join(root, f) for f in files if ShouldScanFile(f)] | 193 full_paths = [os.path.join(root, f) for f in files if ShouldScanFile(f)] |
191 files_with_unneeded_grit_includes.extend( | 194 files_with_unneeded_grit_includes.extend( |
192 [f for f in full_paths | 195 [f for f in full_paths |
193 if not NeedsGritInclude(grit_header, resources, f)]) | 196 if not NeedsGritInclude(grit_header, resources, f)]) |
194 if files_with_unneeded_grit_includes: | 197 if files_with_unneeded_grit_includes: |
195 print '\n'.join(files_with_unneeded_grit_includes) | 198 print '\n'.join(files_with_unneeded_grit_includes) |
196 return 2 | 199 return 2 |
197 return 0 | 200 return 0 |
198 | 201 |
199 | 202 |
200 if __name__ == '__main__': | 203 if __name__ == '__main__': |
201 sys.exit(main(sys.argv)) | 204 sys.exit(main(sys.argv)) |
OLD | NEW |