Index: tools/grit/grit/node/misc.py |
diff --git a/tools/grit/grit/node/misc.py b/tools/grit/grit/node/misc.py |
index ec1e489ac04368a227454e7821819bc1376d1e2d..e077b037e7026a5b7fc621cc117e75a2f99653f8 100644 |
--- a/tools/grit/grit/node/misc.py |
+++ b/tools/grit/grit/node/misc.py |
@@ -7,6 +7,7 @@ |
''' |
import os.path |
+import re |
import sys |
from grit.node import base |
@@ -19,6 +20,33 @@ from grit import util |
import grit.format.rc_header |
+def _ReadFirstIdsFromFile(filename, defines, src_root_dir): |
+ '''Read the starting resource id values from |filename|. We also |
+ expand variables of the form <(FOO) based on defines passed in on |
+ the command line.''' |
+ first_ids_dict = eval(open(filename).read()) |
+ |
+ def ReplaceVariable(matchobj): |
+ for key, value in defines.iteritems(): |
+ if matchobj.group(1) == key: |
+ value = os.path.abspath(value)[len(src_root_dir) + 1:] |
+ return value |
+ return '' |
+ |
+ renames = [] |
+ for grd_filename in first_ids_dict: |
+ new_grd_filename = re.sub(r'<\(([A-Za-z_]+)\)', ReplaceVariable, |
+ grd_filename) |
+ if new_grd_filename != grd_filename: |
+ new_grd_filename = new_grd_filename.replace('\\', '/') |
+ renames.append((grd_filename, new_grd_filename)) |
+ |
+ for grd_filename, new_grd_filename in renames: |
+ first_ids_dict[new_grd_filename] = first_ids_dict[grd_filename] |
+ del(first_ids_dict[grd_filename]) |
+ |
+ return first_ids_dict |
+ |
class IfNode(base.Node): |
'''A node for conditional inclusion of resources. |
@@ -267,7 +295,7 @@ class GritNode(base.Node): |
def SetDefines(self, defines): |
self.defines = defines |
- def AssignFirstIds(self, filename_or_stream, first_id_filename): |
+ def AssignFirstIds(self, filename_or_stream, first_id_filename, defines): |
'''Assign first ids to each grouping node based on values from |
tools/grit/resource_ids.''' |
# If the input is a stream, then we're probably in a unit test and |
@@ -293,7 +321,8 @@ class GritNode(base.Node): |
len(src_root_dir) + 1:] |
filename = filename.replace('\\', '/') |
if not first_ids: |
- first_ids = eval(open(first_id_filename).read()) |
+ first_ids = _ReadFirstIdsFromFile(first_id_filename, defines, |
+ src_root_dir) |
if node.attrs['first_id'] != '': |
raise Exception("Don't set the first_id attribute, update " |