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

Side by Side Diff: mojo/dart/packages/mojom/lib/src/generate.dart

Issue 1539673003: Generate Mojom Types in Dart (Take 2) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Move and Standardize Mojom Type Functions Created 4 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /// This library generates Mojo bindings for a Dart package. 5 /// This library generates Mojo bindings for a Dart package.
6 6
7 library generate; 7 library generate;
8 8
9 import 'dart:async'; 9 import 'dart:async';
10 import 'dart:convert'; 10 import 'dart:convert';
11 import 'dart:developer' as dev; 11 import 'dart:developer' as dev;
12 import 'dart:io'; 12 import 'dart:io';
13 13
14 import 'package:mojom/src/utils.dart'; 14 import 'package:mojom/src/utils.dart';
15 import 'package:path/path.dart' as path; 15 import 'package:path/path.dart' as path;
16 16
17 part 'mojom_finder.dart'; 17 part 'mojom_finder.dart';
18 18
19 const String mojoTestPackage = '_mojo_for_test_only';
20
19 class MojomGenerator { 21 class MojomGenerator {
20 static dev.Counter _genMs; 22 static dev.Counter _genMs;
21 final bool _errorOnDuplicate; 23 final bool _errorOnDuplicate;
22 final bool _dryRun; 24 final bool _dryRun;
23 final bool _force; 25 final bool _force;
24 final Directory _mojoSdk; 26 final Directory _mojoSdk;
25 27
26 Map<String, String> _duplicateDetection; 28 Map<String, String> _duplicateDetection;
27 int _generationMs; 29 int _generationMs;
28 30
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 156
155 final script = path.join( 157 final script = path.join(
156 _mojoSdk.path, 'tools', 'bindings', 'mojom_bindings_generator.py'); 158 _mojoSdk.path, 'tools', 'bindings', 'mojom_bindings_generator.py');
157 final sdkInc = path.normalize(path.join(_mojoSdk.path, '..', '..')); 159 final sdkInc = path.normalize(path.join(_mojoSdk.path, '..', '..'));
158 final outputDir = await Directory.systemTemp.createTemp(); 160 final outputDir = await Directory.systemTemp.createTemp();
159 try { 161 try {
160 final output = outputDir.path; 162 final output = outputDir.path;
161 163
162 final servicesPath = _sniffForMojoServicesInclude(mojom.path); 164 final servicesPath = _sniffForMojoServicesInclude(mojom.path);
163 165
166 final generateTypeInfoFlag = packageName == mojoTestPackage ?
zra 2016/01/27 18:15:12 Please add a TODO and file a bug to remove this ha
alexfandrianto 2016/01/28 03:45:12 Done.
167 '--generate-type-info' : '--no-generate-type-info';
168
164 final arguments = [ 169 final arguments = [
165 '--use_bundled_pylibs', 170 '--use_bundled_pylibs',
166 '-g', 171 '-g',
167 'dart', 172 'dart',
168 '-o', 173 '-o',
169 output, 174 output,
170 '-I', 175 '-I',
171 sdkInc, 176 sdkInc,
172 '-I', 177 '-I',
173 importDir.path, 178 importDir.path,
174 '--no-gen-imports' 179 '--no-gen-imports',
180 generateTypeInfoFlag
175 ]; 181 ];
176 if (servicesPath != null) { 182 if (servicesPath != null) {
177 arguments.add('-I'); 183 arguments.add('-I');
178 arguments.add(servicesPath); 184 arguments.add(servicesPath);
179 } 185 }
180 arguments.add(mojom.path); 186 arguments.add(mojom.path);
181 187
182 log.info('Generating $mojom'); 188 log.info('Generating $mojom');
183 log.info('$script ${arguments.join(" ")}'); 189 log.info('$script ${arguments.join(" ")}');
184 log.info('dryRun = $_dryRun'); 190 log.info('dryRun = $_dryRun');
185 if (!_dryRun) { 191 if (!_dryRun) {
186 final result = await _runBindingsGeneration(script, arguments); 192 final result = await _runBindingsGeneration(script, arguments);
187 if (result.exitCode != 0) { 193 if (result.exitCode != 0) {
188 log.info("bindings generation result = ${result.exitCode}"); 194 log.info("bindings generation result = ${result.exitCode}");
189 await outputDir.delete(recursive: true); 195 await outputDir.delete(recursive: true);
190 throw new GenerationError("$script failed:\n" 196 throw new GenerationError("$script failed:\n"
191 "code: ${result.exitCode}\n" 197 "code: ${result.exitCode}\n"
192 "stderr: ${result.stderr}\n" 198 "stderr: ${result.stderr}\n"
193 "stdout: ${result.stdout}"); 199 "stdout: ${result.stdout}");
194 } else { 200 } else {
195 log.info("bindings generation result = 0"); 201 log.info("bindings generation result = 0");
196 } 202 }
197 203
198 // Generated .mojom.dart is under $output/dart-gen/$PACKAGE/lib/$X 204 // Generated .mojom.dart is under $output/dart-gen/$PACKAGE/lib/$X
199 // Move $X to |destination|/lib/$X. 205 // Move $X to |destination|/lib/$X.
200 // Throw an exception if $PACKGE != [packageName]. 206 // Throw an exception if $PACKAGE != [packageName].
201 final generatedDirName = path.join(output, 'dart-gen'); 207 final generatedDirName = path.join(output, 'dart-gen');
202 final generatedDir = new Directory(generatedDirName); 208 final generatedDir = new Directory(generatedDirName);
203 log.info("generatedDir= $generatedDir"); 209 log.info("generatedDir= $generatedDir");
204 assert(await generatedDir.exists()); 210 assert(await generatedDir.exists());
205 await for (var genpack in generatedDir.list()) { 211 await for (var genpack in generatedDir.list()) {
206 if (genpack is! Directory) continue; 212 if (genpack is! Directory) continue;
207 log.info("genpack = $genpack"); 213 log.info("genpack = $genpack");
208 var libDir = new Directory(path.join(genpack.path, 'lib')); 214 var libDir = new Directory(path.join(genpack.path, 'lib'));
209 var name = path.relative(genpack.path, from: generatedDirName); 215 var name = path.relative(genpack.path, from: generatedDirName);
210 log.info("Found generated lib dir: $libDir"); 216 log.info("Found generated lib dir: $libDir");
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 '\t$dart $packRoot $scriptPath single -m $mojoSdk -r $root ' 443 '\t$dart $packRoot $scriptPath single -m $mojoSdk -r $root '
438 '-p $packagePath $skips'); 444 '-p $packagePath $skips');
439 _errors++; 445 _errors++;
440 return; 446 return;
441 } 447 }
442 } 448 }
443 } 449 }
444 450
445 bool _shouldSkip(File f) => containsPrefix(f.path, _skip); 451 bool _shouldSkip(File f) => containsPrefix(f.path, _skip);
446 } 452 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698