81def main(outdir=None, *inputs):
82 if not outdir or not inputs:
83 print(
"""Usage: %s OUTDIR INPUTS
84 OUTDIR is the war directory to copy to
85 INPUTS is a list of files or patterns used to specify the input
86 .dart files
87This script should be run from the client root directory.
88Files will be merged and copied to: OUTDIR/relative-path-of-file,
89except for dart files with absolute paths, which will be copied to
90 OUTDIR/absolute-path-as-directories""" % sys.argv[0])
91 return 1
92
93 entry_libraries = []
94 for i in inputs:
95 entry_libraries.extend(glob(i))
96
97 for entrypoint in entry_libraries:
98
99
100 worklist = [os.path.normpath(entrypoint)]
102 while len(worklist) > 0:
103 lib = worklist.pop()
104 if lib in seen:
105 continue
106
107 seen.add(lib)
108
109 if (dirname(dirname(lib)).endswith('dom/generated/src') or
110 dirname(lib).endswith('dom/src')):
111 continue
112
114
115
116 outpath =
join(outdir, lib[1:]
if isabs(lib)
else lib)
117 dstpath = dirname(outpath)
118 if not exists(dstpath):
119 os.makedirs(dstpath)
120
121
122 with open(outpath, 'w') as f:
123 prefix = os.environ.get('DART_HTML_PREFIX')
124 if prefix:
125 f.write(prefix + '\n')
126 if library.name:
127 if library.comment:
128 f.write(
'%s' % (
''.
join(library.comment)))
129 f.write("library %s;\n\n" % library.name)
130 else:
131 f.write(
"library %s;\n\n" %
basename(lib))
132 for importfile in library.imports:
133 f.write("import %s;\n" % importfile)
134 f.write(
'%s' % (
''.
join(library.code)))
136 f)
137
138 for suffix in library.imports:
139 m = re.match(r'[\'"]([^\'"]+)[\'"](\s+as\s+\w+)?.*$', suffix)
140 uri = m.group(1)
141 if not uri.startswith('dart:'):
142 worklist.append(
normjoin(dirname(lib), uri))
143
144 return 0
145
146
def parseLibrary(library)
def mergefiles(srcs, dstfile)
def main(outdir=None, *inputs)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder which is used for Skia shader cache icu native lib Path to the library file that exports the ICU data vm service The hostname IP address on which the Dart VM Service should be served If not set
def print(*args, **kwargs)
static SkString join(const CommandLineFlags::StringArray &)