| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 '''Tool to determine inputs and outputs of a grit file. | 6 '''Tool to determine inputs and outputs of a grit file. |
| 7 ''' | 7 ''' |
| 8 | 8 |
| 9 import optparse | 9 import optparse |
| 10 import os | 10 import os |
| 11 import posixpath | 11 import posixpath |
| 12 import types | 12 import types |
| 13 import sys | 13 import sys |
| 14 | 14 |
| 15 from grit import grd_reader | 15 from grit import grd_reader |
| 16 from grit import util | 16 from grit import util |
| 17 | 17 |
| 18 class WrongNumberOfArguments(Exception): | 18 class WrongNumberOfArguments(Exception): |
| 19 pass | 19 pass |
| 20 | 20 |
| 21 | 21 |
| 22 def Outputs(filename, defines): | 22 def Outputs(filename, defines): |
| 23 # TODO(joi@chromium.org): The first_ids_file can now be specified |
| 24 # via an attribute on the <grit> node. Once a change lands in |
| 25 # WebKit to use this attribute, we can stop specifying the |
| 26 # first_ids_file parameter here and instead specify it in all grd |
| 27 # files. For now, since Chrome is the only user of grit_info.py, |
| 28 # this is fine. |
| 23 grd = grd_reader.Parse( | 29 grd = grd_reader.Parse( |
| 24 filename, defines=defines, tags_to_ignore=set(['messages'])) | 30 filename, defines=defines, tags_to_ignore=set(['messages']), |
| 31 first_ids_file='GRIT_DIR/../gritsettings/resource_ids') |
| 25 | 32 |
| 26 target = [] | 33 target = [] |
| 27 lang_folders = {} | 34 lang_folders = {} |
| 28 # Add all explicitly-specified output files | 35 # Add all explicitly-specified output files |
| 29 for output in grd.GetOutputFiles(): | 36 for output in grd.GetOutputFiles(): |
| 30 path = output.GetFilename() | 37 path = output.GetFilename() |
| 31 target.append(path) | 38 target.append(path) |
| 32 | 39 |
| 33 if path.endswith('.h'): | 40 if path.endswith('.h'): |
| 34 path, filename = os.path.split(path) | 41 path, filename = os.path.split(path) |
| (...skipping 16 matching lines...) Expand all Loading... |
| 51 return [t.replace('\\', '/') for t in target] | 58 return [t.replace('\\', '/') for t in target] |
| 52 | 59 |
| 53 | 60 |
| 54 def GritSourceFiles(): | 61 def GritSourceFiles(): |
| 55 files = [] | 62 files = [] |
| 56 grit_root_dir = os.path.relpath(os.path.dirname(__file__), os.getcwd()) | 63 grit_root_dir = os.path.relpath(os.path.dirname(__file__), os.getcwd()) |
| 57 for root, dirs, filenames in os.walk(grit_root_dir): | 64 for root, dirs, filenames in os.walk(grit_root_dir): |
| 58 grit_src = [os.path.join(root, f) for f in filenames | 65 grit_src = [os.path.join(root, f) for f in filenames |
| 59 if f.endswith('.py')] | 66 if f.endswith('.py')] |
| 60 files.extend(grit_src) | 67 files.extend(grit_src) |
| 61 # TODO(joi@chromium.org): Once we switch to specifying the | |
| 62 # resource_ids file via a .grd attribute, it should be considered an | |
| 63 # input of grit and this bit should no longer be necessary. | |
| 64 default_resource_ids = os.path.relpath( | |
| 65 os.path.join(grit_root_dir, '..', 'gritsettings', 'resource_ids'), | |
| 66 os.getcwd()) | |
| 67 if os.path.exists(default_resource_ids): | |
| 68 files.append(default_resource_ids) | |
| 69 return files | 68 return files |
| 70 | 69 |
| 71 | 70 |
| 72 def Inputs(filename, defines): | 71 def Inputs(filename, defines): |
| 72 # TODO(joi@chromium.org): The first_ids_file can now be specified |
| 73 # via an attribute on the <grit> node. Once a change lands in |
| 74 # WebKit to use this attribute, we can stop specifying the |
| 75 # first_ids_file parameter here and instead specify it in all grd |
| 76 # files. For now, since Chrome is the only user of grit_info.py, |
| 77 # this is fine. |
| 73 grd = grd_reader.Parse( | 78 grd = grd_reader.Parse( |
| 74 filename, debug=False, defines=defines, tags_to_ignore=set(['messages'])) | 79 filename, debug=False, defines=defines, tags_to_ignore=set(['messages']), |
| 80 first_ids_file='GRIT_DIR/../gritsettings/resource_ids') |
| 75 files = [] | 81 files = [] |
| 76 for node in grd: | 82 for node in grd: |
| 77 if (node.name == 'structure' or node.name == 'skeleton' or | 83 if (node.name == 'structure' or node.name == 'skeleton' or |
| 78 (node.name == 'file' and node.parent and | 84 (node.name == 'file' and node.parent and |
| 79 node.parent.name == 'translations')): | 85 node.parent.name == 'translations')): |
| 80 files.append(node.GetFilePath()) | 86 files.append(node.GetFilePath()) |
| 87 elif node.name == 'grit': |
| 88 first_ids_file = node.GetFirstIdsFile() |
| 89 if first_ids_file: |
| 90 files.append(first_ids_file) |
| 81 elif node.name == 'include': | 91 elif node.name == 'include': |
| 82 # Only include files that we actually plan on using. | 92 # Only include files that we actually plan on using. |
| 83 if node.SatisfiesOutputCondition(): | 93 if node.SatisfiesOutputCondition(): |
| 84 files.append(node.FilenameToOpen()) | 94 files.append(node.FilenameToOpen()) |
| 85 # If it's a flattened node, grab inlined resources too. | 95 # If it's a flattened node, grab inlined resources too. |
| 86 if node.attrs['flattenhtml'] == 'true': | 96 if node.attrs['flattenhtml'] == 'true': |
| 87 files.extend(node.GetHtmlResourceFilenames()) | 97 files.extend(node.GetHtmlResourceFilenames()) |
| 88 | 98 |
| 89 return files | 99 return files |
| 90 | 100 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 except WrongNumberOfArguments, e: | 161 except WrongNumberOfArguments, e: |
| 152 PrintUsage() | 162 PrintUsage() |
| 153 print e | 163 print e |
| 154 return 1 | 164 return 1 |
| 155 print result | 165 print result |
| 156 return 0 | 166 return 0 |
| 157 | 167 |
| 158 | 168 |
| 159 if __name__ == '__main__': | 169 if __name__ == '__main__': |
| 160 sys.exit(main(sys.argv)) | 170 sys.exit(main(sys.argv)) |
| OLD | NEW |