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

Side by Side Diff: runtime/tools/create_resources.py

Issue 125103004: Move service into VM (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 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 | « runtime/include/dart_api.h ('k') | runtime/vm/dart.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 # Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 # for details. All rights reserved. Use of this source code is governed by a 2 # for details. All rights reserved. Use of this source code is governed by a
3 # BSD-style license that can be found in the LICENSE file. 3 # BSD-style license that can be found in the LICENSE file.
4 # 4 #
5 # This python script creates string literals in a C++ source file from a C++ 5 # This python script creates string literals in a C++ source file from a C++
6 # source template and one or more resource files. 6 # source template and one or more resource files.
7 7
8 import os 8 import os
9 import sys 9 import sys
10 from os.path import join 10 from os.path import join
11 import time 11 import time
12 from optparse import OptionParser 12 from optparse import OptionParser
13 import re 13 import re
14 from datetime import date 14 from datetime import date
15 15
16 def makeResources(root_dir, input_files): 16 def makeResources(root_dir, input_files, table_name):
17 result = '' 17 result = ''
18 resources = [] 18 resources = []
19 19
20 # Write each file's contents as a byte string constant. 20 # Write each file's contents as a byte string constant.
21 for resource_file in input_files: 21 for resource_file in input_files:
22 if root_dir and resource_file.startswith(root_dir): 22 if root_dir and resource_file.startswith(root_dir):
23 resource_file_name = resource_file[ len(root_dir) : ] 23 resource_file_name = resource_file[ len(root_dir) : ]
24 else: 24 else:
25 resource_file_name = resource_file 25 resource_file_name = resource_file
26 resource_url = '/%s' % resource_file_name 26 resource_url = '/%s' % resource_file_name
(...skipping 10 matching lines...) Expand all
37 if lineCounter == 10: 37 if lineCounter == 10:
38 result += '\n ' 38 result += '\n '
39 lineCounter = 0 39 lineCounter = 0
40 if lineCounter != 0: 40 if lineCounter != 0:
41 result += '\n ' 41 result += '\n '
42 result += ' 0\n};\n\n' 42 result += ' 0\n};\n\n'
43 resources.append( 43 resources.append(
44 (resource_url, resource_name, os.stat(resource_file).st_size) ); 44 (resource_url, resource_name, os.stat(resource_file).st_size) );
45 45
46 # Write the resource table. 46 # Write the resource table.
47 result += 'Resources::resource_map_entry Resources::builtin_resources_[] = ' 47 result += 'ResourcesEntry __%s_resources_[] = ' % table_name
48 result += '{\n' 48 result += '{\n'
49 for res in resources: 49 for res in resources:
50 result += ' { "%s", %s, %d },\n' % res 50 result += ' { "%s", %s, %d },\n' % res
51 result += ' { 0, 0, 0 },\n'
51 result += '};\n\n' 52 result += '};\n\n'
52 result += 'const intptr_t Resources::builtin_resources_count_ '
53 result += '= %d;\n' % len(resources)
54 return result 53 return result
55 54
56 55
57 def makeFile(output_file, root_dir, input_files): 56 def makeFile(output_file, root_dir, input_files, outer_namespace,
57 inner_namespace, table_name):
58 cc_text = ''' 58 cc_text = '''
59 // Copyright (c) %d, the Dart project authors. Please see the AUTHORS file 59 // Copyright (c) %d, the Dart project authors. Please see the AUTHORS file
60 // for details. All rights reserved. Use of this source code is governed by a 60 // for details. All rights reserved. Use of this source code is governed by a
61 // BSD-style license that can be found in the LICENSE file. 61 // BSD-style license that can be found in the LICENSE file.
62 62
63 ''' % date.today().year 63 ''' % date.today().year
64 cc_text += '#include "bin/resources.h"\n\n' 64 cc_text += 'namespace %s {\n' % outer_namespace
65 cc_text += 'namespace dart {\n' 65 if inner_namespace != None:
66 cc_text += 'namespace bin {\n' 66 cc_text += 'namespace %s {\n' % inner_namespace
67 cc_text += makeResources(root_dir, input_files) 67 cc_text += '''
68 cc_text += '} // namespace bin\n} // namespace dart\n' 68 struct ResourcesEntry {
69 const char* path_;
70 const char* resource_;
71 int length_;
72 };
73
74 '''
75 cc_text += makeResources(root_dir, input_files, table_name)
76 cc_text += '\n'
77 if inner_namespace != None:
78 cc_text += '} // namespace %s\n' % inner_namespace
79 cc_text += '} // namespace %s\n' % outer_namespace
69 open(output_file, 'w').write(cc_text) 80 open(output_file, 'w').write(cc_text)
70 return True 81 return True
71 82
72 83
73 def main(args): 84 def main(args):
74 try: 85 try:
75 # Parse input. 86 # Parse input.
76 parser = OptionParser() 87 parser = OptionParser()
77 parser.add_option("--output", 88 parser.add_option("--output",
78 action="store", type="string", 89 action="store", type="string",
79 help="output file name") 90 help="output file name")
80 parser.add_option("--root_prefix", 91 parser.add_option("--root_prefix",
81 action="store", type="string", 92 action="store", type="string",
82 help="root directory for resources") 93 help="root directory for resources")
94 parser.add_option("--outer_namespace",
95 action="store", type="string",
96 help="outer C++ namespace",
97 default="dart")
98 parser.add_option("--inner_namespace",
99 action="store", type="string",
100 help="inner C++ namespace")
101 parser.add_option("--table_name",
102 action="store", type="string",
103 help="name of table")
83 (options, args) = parser.parse_args() 104 (options, args) = parser.parse_args()
84 if not options.output: 105 if not options.output:
85 sys.stderr.write('--output not specified\n') 106 sys.stderr.write('--output not specified\n')
86 return -1 107 return -1
108 if not options.table_name:
109 sys.stderr.write('--table_name not specified\n')
110 return -1
87 if len(args) == 0: 111 if len(args) == 0:
88 sys.stderr.write('No input files specified\n') 112 sys.stderr.write('No input files specified\n')
89 return -1 113 return -1
90 114
91 files = [ ] 115 files = [ ]
92 for arg in args: 116 for arg in args:
93 files.append(arg) 117 files.append(arg)
94 118
95 if not makeFile(options.output, options.root_prefix, files): 119 if not makeFile(options.output, options.root_prefix, files,
120 options.outer_namespace, options.inner_namespace,
121 options.table_name):
96 return -1 122 return -1
97 123
98 return 0 124 return 0
99 except Exception, inst: 125 except Exception, inst:
100 sys.stderr.write('create_resources.py exception\n') 126 sys.stderr.write('create_resources.py exception\n')
101 sys.stderr.write(str(inst)) 127 sys.stderr.write(str(inst))
102 sys.stderr.write('\n') 128 sys.stderr.write('\n')
103 return -1 129 return -1
104 130
105 if __name__ == '__main__': 131 if __name__ == '__main__':
106 sys.exit(main(sys.argv)) 132 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « runtime/include/dart_api.h ('k') | runtime/vm/dart.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698