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

Side by Side Diff: tools/copy_dart.py

Issue 350483003: Build Tools Cleanup (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: more fixes as reviewed by ricow Created 6 years, 5 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 | « tools/compiler_scripts/generate_source_list.py ('k') | tools/create_debian_packages.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
3 # for details. All rights reserved. Use of this source code is governed by a 3 # for details. All rights reserved. Use of this source code is governed by a
4 # BSD-style license that can be found in the LICENSE file. 4 # BSD-style license that can be found in the LICENSE file.
5 """Used to merge and copy dart source files for deployment to AppEngine""" 5 """Used to merge and copy dart source files for deployment to AppEngine"""
6 6
7 import fileinput 7 import fileinput
8 import sys 8 import sys
9 import shutil
10 import os 9 import os
11 import re 10 import re
12 from os.path import abspath, basename, dirname, exists, isabs, join 11 from os.path import basename, dirname, exists, isabs, join
13 from glob import glob 12 from glob import glob
14 13
15 re_directive = re.compile( 14 re_directive = re.compile(
16 r'^(library|import|part|native|resource)\s+(.*);$') 15 r'^(library|import|part|native|resource)\s+(.*);$')
17 re_comment = re.compile( 16 re_comment = re.compile(
18 r'^(///|/\*| \*).*$') 17 r'^(///|/\*| \*).*$')
19 18
20 class Library(object): 19 class Library(object):
21 def __init__(self, name, imports, sources, natives, code, comment): 20 def __init__(self, name, imports, sources, natives, code, comment):
22 self.name = name 21 self.name = name
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 68
70 def mergefiles(srcs, dstfile): 69 def mergefiles(srcs, dstfile):
71 for src in srcs: 70 for src in srcs:
72 with open(src, 'r') as s: 71 with open(src, 'r') as s:
73 for line in s: 72 for line in s:
74 if not line.startswith('part of '): 73 if not line.startswith('part of '):
75 dstfile.write(line) 74 dstfile.write(line)
76 75
77 def main(outdir = None, *inputs): 76 def main(outdir = None, *inputs):
78 if not outdir or not inputs: 77 if not outdir or not inputs:
79 print "Usage: %s OUTDIR INPUTS" % args[0] 78 print "Usage: %s OUTDIR INPUTS" % sys.argv[0]
80 print " OUTDIR is the war directory to copy to" 79 print " OUTDIR is the war directory to copy to"
81 print " INPUTS is a list of files or patterns used to specify the input" 80 print " INPUTS is a list of files or patterns used to specify the input"
82 print " .dart files" 81 print " .dart files"
83 print "This script should be run from the client root directory." 82 print "This script should be run from the client root directory."
84 print "Files will be merged and copied to: OUTDIR/relative-path-of-file," 83 print "Files will be merged and copied to: OUTDIR/relative-path-of-file,"
85 print "except for dart files with absolute paths, which will be copied to" 84 print "except for dart files with absolute paths, which will be copied to"
86 print " OUTDIR/absolute-path-as-directories" 85 print " OUTDIR/absolute-path-as-directories"
87 return 1 86 return 1
88 87
89 entry_libraries = [] 88 entry_libraries = []
(...skipping 27 matching lines...) Expand all
117 116
118 # Create file containing all imports, and inlining all sources 117 # Create file containing all imports, and inlining all sources
119 with open(outpath, 'w') as f: 118 with open(outpath, 'w') as f:
120 if library.name: 119 if library.name:
121 if library.comment: 120 if library.comment:
122 f.write('%s' % (''.join(library.comment))) 121 f.write('%s' % (''.join(library.comment)))
123 f.write("library %s;\n\n" % library.name) 122 f.write("library %s;\n\n" % library.name)
124 else: 123 else:
125 f.write("library %s;\n\n" % basename(lib)) 124 f.write("library %s;\n\n" % basename(lib))
126 for importfile in library.imports: 125 for importfile in library.imports:
127 f.write("import %s;\n" % (importfile)) 126 f.write("import %s;\n" % importfile)
128 f.write('%s' % (''.join(library.code))) 127 f.write('%s' % (''.join(library.code)))
129 mergefiles([normjoin(dirname(lib), s) for s in library.sources], f) 128 mergefiles([normjoin(dirname(lib), s) for s in library.sources], f)
130 129
131 for suffix in library.imports: 130 for suffix in library.imports:
132 m = re.match(r'[\'"]([^\'"]+)[\'"](\s+as\s+\w+)?.*$', suffix) 131 m = re.match(r'[\'"]([^\'"]+)[\'"](\s+as\s+\w+)?.*$', suffix)
133 uri = m.group(1) 132 uri = m.group(1)
134 if not uri.startswith('dart:'): 133 if not uri.startswith('dart:'):
135 worklist.append(normjoin(dirname(lib), uri)); 134 worklist.append(normjoin(dirname(lib), uri))
136 135
137 return 0 136 return 0
138 137
139 if __name__ == '__main__': 138 if __name__ == '__main__':
140 sys.exit(main(*sys.argv[1:])) 139 sys.exit(main(*sys.argv[1:]))
OLDNEW
« no previous file with comments | « tools/compiler_scripts/generate_source_list.py ('k') | tools/create_debian_packages.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698