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

Side by Side Diff: lib/src/options.dart

Issue 1150143006: fixes #201, add support for custom URL mapping (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: remove options change Created 5 years, 6 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
« no previous file with comments | « lib/src/dependency_graph.dart ('k') | lib/src/testing.dart » ('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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 /// Set of flags and options passed to the compiler 5 /// Set of flags and options passed to the compiler
6 library dev_compiler.src.options; 6 library dev_compiler.src.options;
7 7
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:args/args.dart'; 10 import 'package:args/args.dart';
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 229
230 /// Whether to emit the source map files. 230 /// Whether to emit the source map files.
231 @override 231 @override
232 final bool emitSourceMaps; 232 final bool emitSourceMaps;
233 233
234 /// Location for runtime files, such as `dart_runtime.js`. By default this is 234 /// Location for runtime files, such as `dart_runtime.js`. By default this is
235 /// inferred to be under `lib/runtime/` in the location of the `dev_compiler` 235 /// inferred to be under `lib/runtime/` in the location of the `dev_compiler`
236 /// package (if we can infer where that is located). 236 /// package (if we can infer where that is located).
237 final String runtimeDir; 237 final String runtimeDir;
238 238
239 /// Custom URI mappings, such as "dart:foo" -> "path/to/foo.dart"
240 final Map<String, String> customUrlMappings;
241
239 CompilerOptions({this.allowConstCasts: true, this.checkSdk: false, 242 CompilerOptions({this.allowConstCasts: true, this.checkSdk: false,
240 this.dumpInfo: false, this.dumpInfoFile, this.dumpSrcDir, 243 this.dumpInfo: false, this.dumpInfoFile, this.dumpSrcDir,
241 this.forceCompile: false, this.formatOutput: false, 244 this.forceCompile: false, this.formatOutput: false,
242 this.ignoreTypes: false, 245 this.ignoreTypes: false,
243 this.wrapClosures: RulesOptions.wrapClosuresDefault, this.outputDir, 246 this.wrapClosures: RulesOptions.wrapClosuresDefault, this.outputDir,
244 this.outputDart: false, this.useColors: true, 247 this.outputDart: false, this.useColors: true,
245 this.covariantGenerics: true, this.relaxedCasts: true, 248 this.covariantGenerics: true, this.relaxedCasts: true,
246 this.useMultiPackage: false, this.packageRoot: 'packages/', 249 this.useMultiPackage: false, this.packageRoot: 'packages/',
247 this.packagePaths: const <String>[], this.resources: const <String>[], 250 this.packagePaths: const <String>[], this.resources: const <String>[],
248 this.inferDownwards: RulesOptions.inferDownwardsDefault, 251 this.inferDownwards: RulesOptions.inferDownwardsDefault,
249 this.inferFromOverrides: ResolverOptions.inferFromOverridesDefault, 252 this.inferFromOverrides: ResolverOptions.inferFromOverridesDefault,
250 this.inferTransitively: ResolverOptions.inferTransitivelyDefault, 253 this.inferTransitively: ResolverOptions.inferTransitivelyDefault,
251 this.onlyInferConstsAndFinalFields: ResolverOptions.onlyInferConstAndFinal FieldsDefault, 254 this.onlyInferConstsAndFinalFields: ResolverOptions.onlyInferConstAndFinal FieldsDefault,
252 this.nonnullableTypes: TypeOptions.NONNULLABLE_TYPES, this.help: false, 255 this.nonnullableTypes: TypeOptions.NONNULLABLE_TYPES, this.help: false,
253 this.useMockSdk: false, this.dartSdkPath, this.logLevel: Level.SEVERE, 256 this.useMockSdk: false, this.dartSdkPath, this.logLevel: Level.SEVERE,
254 this.emitSourceMaps: true, this.entryPointFile: null, 257 this.emitSourceMaps: true, this.entryPointFile: null,
255 this.serverMode: false, this.useImplicitHtml: false, 258 this.serverMode: false, this.useImplicitHtml: false,
256 this.enableHashing: false, this.host: 'localhost', this.port: 8080, 259 this.enableHashing: false, this.host: 'localhost', this.port: 8080,
257 this.runtimeDir}); 260 this.runtimeDir, this.customUrlMappings: const {}});
258 } 261 }
259 262
260 /// Parses options from the command-line 263 /// Parses options from the command-line
261 CompilerOptions parseOptions(List<String> argv) { 264 CompilerOptions parseOptions(List<String> argv) {
262 ArgResults args = argParser.parse(argv); 265 ArgResults args = argParser.parse(argv);
266 bool showUsage = args['help'];
267
263 var serverMode = args['server']; 268 var serverMode = args['server'];
264 var enableHashing = args['hashing']; 269 var enableHashing = args['hashing'];
265 if (enableHashing == null) { 270 if (enableHashing == null) {
266 enableHashing = serverMode; 271 enableHashing = serverMode;
267 } 272 }
268 // TODO(jmesserly): shouldn't level always default to warning? 273 // TODO(jmesserly): shouldn't level always default to warning?
269 var logLevel = serverMode ? Level.WARNING : Level.SEVERE; 274 var logLevel = serverMode ? Level.WARNING : Level.SEVERE;
270 var levelName = args['log']; 275 var levelName = args['log'];
271 if (levelName != null) { 276 if (levelName != null) {
272 levelName = levelName.toUpperCase(); 277 levelName = levelName.toUpperCase();
273 logLevel = Level.LEVELS.firstWhere((l) => l.name == levelName, 278 logLevel = Level.LEVELS.firstWhere((l) => l.name == levelName,
274 orElse: () => logLevel); 279 orElse: () => logLevel);
275 } 280 }
276 var useColors = stdioType(stdout) == StdioType.TERMINAL; 281 var useColors = stdioType(stdout) == StdioType.TERMINAL;
277 var sdkPath = args['dart-sdk']; 282 var sdkPath = args['dart-sdk'];
278 if (sdkPath == null && !args['mock-sdk']) { 283 if (sdkPath == null && !args['mock-sdk']) {
279 sdkPath = getSdkDir(argv).path; 284 sdkPath = getSdkDir(argv).path;
280 } 285 }
281 var runtimeDir = args['runtime-dir']; 286 var runtimeDir = args['runtime-dir'];
282 if (runtimeDir == null) { 287 if (runtimeDir == null) {
283 runtimeDir = _computeRuntimeDir(); 288 runtimeDir = _computeRuntimeDir();
284 } 289 }
285 var outputDir = args['out']; 290 var outputDir = args['out'];
286 if (outputDir == null && serverMode) { 291 if (outputDir == null && serverMode) {
287 outputDir = Directory.systemTemp.createTempSync("dev_compiler_out_").path; 292 outputDir = Directory.systemTemp.createTempSync("dev_compiler_out_").path;
288 } 293 }
289 var dumpInfo = args['dump-info']; 294 var dumpInfo = args['dump-info'];
290 if (dumpInfo == null) dumpInfo = serverMode; 295 if (dumpInfo == null) dumpInfo = serverMode;
291 296
297 var customUrlMappings = <String, String>{};
298 for (var mapping in args['url-mapping']) {
299 var splitMapping = mapping.split(',');
300 if (splitMapping.length != 2) {
301 showUsage = true;
302 continue;
303 }
304 customUrlMappings[splitMapping[0]] = splitMapping[1];
305 }
306
292 var entryPointFile = args.rest.length == 0 ? null : args.rest.first; 307 var entryPointFile = args.rest.length == 0 ? null : args.rest.first;
293 308
294 return new CompilerOptions( 309 return new CompilerOptions(
295 allowConstCasts: args['allow-const-casts'], 310 allowConstCasts: args['allow-const-casts'],
296 checkSdk: args['sdk-check'], 311 checkSdk: args['sdk-check'],
297 dumpInfo: dumpInfo, 312 dumpInfo: dumpInfo,
298 dumpInfoFile: args['dump-info-file'], 313 dumpInfoFile: args['dump-info-file'],
299 dumpSrcDir: args['dump-src-to'], 314 dumpSrcDir: args['dump-src-to'],
300 forceCompile: args['force-compile'] || serverMode, 315 forceCompile: args['force-compile'] || serverMode,
301 formatOutput: args['dart-gen-fmt'], 316 formatOutput: args['dart-gen-fmt'],
302 ignoreTypes: args['ignore-types'], 317 ignoreTypes: args['ignore-types'],
303 wrapClosures: args['wrap-closures'], 318 wrapClosures: args['wrap-closures'],
304 outputDart: args['dart-gen'], 319 outputDart: args['dart-gen'],
305 outputDir: outputDir, 320 outputDir: outputDir,
306 covariantGenerics: args['covariant-generics'], 321 covariantGenerics: args['covariant-generics'],
307 relaxedCasts: args['relaxed-casts'], 322 relaxedCasts: args['relaxed-casts'],
308 useColors: useColors, 323 useColors: useColors,
324 customUrlMappings: customUrlMappings,
309 useMultiPackage: args['use-multi-package'], 325 useMultiPackage: args['use-multi-package'],
310 packageRoot: args['package-root'], 326 packageRoot: args['package-root'],
311 packagePaths: args['package-paths'].split(','), 327 packagePaths: args['package-paths'].split(','),
312 resources: args['resources'] 328 resources: args['resources']
313 .split(',') 329 .split(',')
314 .where((s) => s.isNotEmpty) 330 .where((s) => s.isNotEmpty)
315 .toList(), 331 .toList(),
316 inferDownwards: args['infer-downwards'], 332 inferDownwards: args['infer-downwards'],
317 inferFromOverrides: args['infer-from-overrides'], 333 inferFromOverrides: args['infer-from-overrides'],
318 inferTransitively: args['infer-transitively'], 334 inferTransitively: args['infer-transitively'],
319 onlyInferConstsAndFinalFields: args['infer-only-finals'], 335 onlyInferConstsAndFinalFields: args['infer-only-finals'],
320 nonnullableTypes: optionsToList(args['nonnullable'], 336 nonnullableTypes: optionsToList(args['nonnullable'],
321 defaultValue: TypeOptions.NONNULLABLE_TYPES), 337 defaultValue: TypeOptions.NONNULLABLE_TYPES),
322 help: args['help'], 338 help: showUsage,
323 useMockSdk: args['mock-sdk'], 339 useMockSdk: args['mock-sdk'],
324 dartSdkPath: sdkPath, 340 dartSdkPath: sdkPath,
325 logLevel: logLevel, 341 logLevel: logLevel,
326 emitSourceMaps: args['source-maps'], 342 emitSourceMaps: args['source-maps'],
327 entryPointFile: entryPointFile, 343 entryPointFile: entryPointFile,
328 serverMode: serverMode, 344 serverMode: serverMode,
329 useImplicitHtml: serverMode && entryPointFile.endsWith('.dart'), 345 useImplicitHtml: serverMode && entryPointFile.endsWith('.dart'),
330 enableHashing: enableHashing, 346 enableHashing: enableHashing,
331 host: args['host'], 347 host: args['host'],
332 port: int.parse(args['port']), 348 port: int.parse(args['port']),
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 ..addOption('dart-sdk', help: 'Dart SDK Path', defaultsTo: null) 389 ..addOption('dart-sdk', help: 'Dart SDK Path', defaultsTo: null)
374 ..addFlag('dart-gen', 390 ..addFlag('dart-gen',
375 abbr: 'd', help: 'Generate dart output', defaultsTo: false) 391 abbr: 'd', help: 'Generate dart output', defaultsTo: false)
376 ..addFlag('dart-gen-fmt', 392 ..addFlag('dart-gen-fmt',
377 help: 'Generate readable dart output', defaultsTo: true) 393 help: 'Generate readable dart output', defaultsTo: true)
378 ..addOption('dump-src-to', help: 'Dump dart src code', defaultsTo: null) 394 ..addOption('dump-src-to', help: 'Dump dart src code', defaultsTo: null)
379 ..addOption('package-root', 395 ..addOption('package-root',
380 abbr: 'p', 396 abbr: 'p',
381 help: 'Package root to resolve "package:" imports', 397 help: 'Package root to resolve "package:" imports',
382 defaultsTo: 'packages/') 398 defaultsTo: 'packages/')
399 ..addOption('url-mapping',
400 help: '--url-mapping=libraryUri,/path/to/library.dart uses library.dart\n'
401 'as the source for an import of of "libraryUri".',
402 allowMultiple: true,
403 splitCommas: false)
383 ..addFlag('use-multi-package', 404 ..addFlag('use-multi-package',
384 help: 'Whether to use the multi-package resolver for "package:" imports', 405 help: 'Whether to use the multi-package resolver for "package:" imports',
385 defaultsTo: false) 406 defaultsTo: false)
386 ..addOption('package-paths', 407 ..addOption('package-paths',
387 help: 'if using the multi-package resolver, the list of directories to\n' 408 help: 'if using the multi-package resolver, the list of directories to\n'
388 'look for packages in.', defaultsTo: '') 409 'look for packages in.', defaultsTo: '')
389 ..addOption('resources', 410 ..addOption('resources',
390 help: 'Additional resources to serve', defaultsTo: '') 411 help: 'Additional resources to serve', defaultsTo: '')
391 ..addFlag('source-maps', 412 ..addFlag('source-maps',
392 help: 'Whether to emit source map files', defaultsTo: true) 413 help: 'Whether to emit source map files', defaultsTo: true)
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 // The pub-cache directory is two levels up, but we verify that the layout 479 // The pub-cache directory is two levels up, but we verify that the layout
459 // looks correct. 480 // looks correct.
460 if (path.basename(dir) != 'dev_compiler') return null; 481 if (path.basename(dir) != 'dev_compiler') return null;
461 dir = path.dirname(dir); 482 dir = path.dirname(dir);
462 if (path.basename(dir) != 'global_packages') return null; 483 if (path.basename(dir) != 'global_packages') return null;
463 dir = path.dirname(dir); 484 dir = path.dirname(dir);
464 return path.join(dir, cacheDir, 'lib', 'runtime'); 485 return path.join(dir, cacheDir, 'lib', 'runtime');
465 } 486 }
466 return null; 487 return null;
467 } 488 }
OLDNEW
« no previous file with comments | « lib/src/dependency_graph.dart ('k') | lib/src/testing.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698