| OLD | NEW |
| 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 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 /// File where to start compilation from. | 144 /// File where to start compilation from. |
| 145 final String entryPointFile; | 145 final String entryPointFile; |
| 146 | 146 |
| 147 /// Whether to allow casts in constant contexts. | 147 /// Whether to allow casts in constant contexts. |
| 148 @override | 148 @override |
| 149 final bool allowConstCasts; | 149 final bool allowConstCasts; |
| 150 | 150 |
| 151 /// Whether to run as a development server. | 151 /// Whether to run as a development server. |
| 152 final bool serverMode; | 152 final bool serverMode; |
| 153 | 153 |
| 154 /// Whether to enable hash-based caching of files. |
| 155 final bool enableHashing; |
| 156 |
| 154 /// Port used for the HTTP server when [serverMode] is on. | 157 /// Port used for the HTTP server when [serverMode] is on. |
| 155 final int port; | 158 final int port; |
| 156 | 159 |
| 157 /// Host name or address for HTTP server when [serverMode] is on. | 160 /// Host name or address for HTTP server when [serverMode] is on. |
| 158 final String host; | 161 final String host; |
| 159 | 162 |
| 160 /// Whether to use covariant generics | 163 /// Whether to use covariant generics |
| 161 @override | 164 @override |
| 162 final bool covariantGenerics; | 165 final bool covariantGenerics; |
| 163 | 166 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 this.covariantGenerics: true, this.relaxedCasts: true, | 228 this.covariantGenerics: true, this.relaxedCasts: true, |
| 226 this.useMultiPackage: false, this.packageRoot: 'packages/', | 229 this.useMultiPackage: false, this.packageRoot: 'packages/', |
| 227 this.packagePaths: const <String>[], | 230 this.packagePaths: const <String>[], |
| 228 this.inferDownwards: RulesOptions.inferDownwardsDefault, | 231 this.inferDownwards: RulesOptions.inferDownwardsDefault, |
| 229 this.inferFromOverrides: ResolverOptions.inferFromOverridesDefault, | 232 this.inferFromOverrides: ResolverOptions.inferFromOverridesDefault, |
| 230 this.inferTransitively: ResolverOptions.inferTransitivelyDefault, | 233 this.inferTransitively: ResolverOptions.inferTransitivelyDefault, |
| 231 this.onlyInferConstsAndFinalFields: ResolverOptions.onlyInferConstAndFinal
FieldsDefault, | 234 this.onlyInferConstsAndFinalFields: ResolverOptions.onlyInferConstAndFinal
FieldsDefault, |
| 232 this.nonnullableTypes: TypeOptions.NONNULLABLE_TYPES, this.help: false, | 235 this.nonnullableTypes: TypeOptions.NONNULLABLE_TYPES, this.help: false, |
| 233 this.useMockSdk: false, this.dartSdkPath, this.logLevel: Level.SEVERE, | 236 this.useMockSdk: false, this.dartSdkPath, this.logLevel: Level.SEVERE, |
| 234 this.emitSourceMaps: true, this.entryPointFile: null, | 237 this.emitSourceMaps: true, this.entryPointFile: null, |
| 235 this.serverMode: false, this.host: 'localhost', this.port: 8080, | 238 this.serverMode: false, this.enableHashing: false, this.host: 'localhost', |
| 236 this.runtimeDir}); | 239 this.port: 8080, this.runtimeDir}); |
| 237 } | 240 } |
| 238 | 241 |
| 239 /// Parses options from the command-line | 242 /// Parses options from the command-line |
| 240 CompilerOptions parseOptions(List<String> argv) { | 243 CompilerOptions parseOptions(List<String> argv) { |
| 241 ArgResults args = argParser.parse(argv); | 244 ArgResults args = argParser.parse(argv); |
| 242 var serverMode = args['server']; | 245 var serverMode = args['server']; |
| 246 var enableHashing = args['hashing']; |
| 247 if (enableHashing == null) { |
| 248 enableHashing = serverMode; |
| 249 } |
| 243 var logLevel = serverMode ? Level.ALL : Level.SEVERE; | 250 var logLevel = serverMode ? Level.ALL : Level.SEVERE; |
| 244 var levelName = args['log']; | 251 var levelName = args['log']; |
| 245 if (levelName != null) { | 252 if (levelName != null) { |
| 246 levelName = levelName.toUpperCase(); | 253 levelName = levelName.toUpperCase(); |
| 247 logLevel = Level.LEVELS.firstWhere((l) => l.name == levelName, | 254 logLevel = Level.LEVELS.firstWhere((l) => l.name == levelName, |
| 248 orElse: () => logLevel); | 255 orElse: () => logLevel); |
| 249 } | 256 } |
| 250 var useColors = stdioType(stdout) == StdioType.TERMINAL; | 257 var useColors = stdioType(stdout) == StdioType.TERMINAL; |
| 251 var sdkPath = args['dart-sdk']; | 258 var sdkPath = args['dart-sdk']; |
| 252 if (sdkPath == null && !args['mock-sdk']) { | 259 if (sdkPath == null && !args['mock-sdk']) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 onlyInferConstsAndFinalFields: args['infer-only-finals'], | 294 onlyInferConstsAndFinalFields: args['infer-only-finals'], |
| 288 nonnullableTypes: optionsToList(args['nonnullable'], | 295 nonnullableTypes: optionsToList(args['nonnullable'], |
| 289 defaultValue: TypeOptions.NONNULLABLE_TYPES), | 296 defaultValue: TypeOptions.NONNULLABLE_TYPES), |
| 290 help: args['help'], | 297 help: args['help'], |
| 291 useMockSdk: args['mock-sdk'], | 298 useMockSdk: args['mock-sdk'], |
| 292 dartSdkPath: sdkPath, | 299 dartSdkPath: sdkPath, |
| 293 logLevel: logLevel, | 300 logLevel: logLevel, |
| 294 emitSourceMaps: args['source-maps'], | 301 emitSourceMaps: args['source-maps'], |
| 295 entryPointFile: args.rest.length == 0 ? null : args.rest.first, | 302 entryPointFile: args.rest.length == 0 ? null : args.rest.first, |
| 296 serverMode: serverMode, | 303 serverMode: serverMode, |
| 304 enableHashing: enableHashing, |
| 297 host: args['host'], | 305 host: args['host'], |
| 298 port: int.parse(args['port']), | 306 port: int.parse(args['port']), |
| 299 runtimeDir: runtimeDir); | 307 runtimeDir: runtimeDir); |
| 300 } | 308 } |
| 301 | 309 |
| 302 final ArgParser argParser = new ArgParser() | 310 final ArgParser argParser = new ArgParser() |
| 303 // resolver/checker options | 311 // resolver/checker options |
| 304 ..addFlag('allow-const-casts', | 312 ..addFlag('allow-const-casts', |
| 305 help: 'Allow casts in const contexts', defaultsTo: true) | 313 help: 'Allow casts in const contexts', defaultsTo: true) |
| 306 ..addFlag('sdk-check', | 314 ..addFlag('sdk-check', |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 help: 'if using the multi-package resolver, the list of directories to\n' | 361 help: 'if using the multi-package resolver, the list of directories to\n' |
| 354 'look for packages in.', defaultsTo: '') | 362 'look for packages in.', defaultsTo: '') |
| 355 ..addFlag('source-maps', | 363 ..addFlag('source-maps', |
| 356 help: 'Whether to emit source map files', defaultsTo: true) | 364 help: 'Whether to emit source map files', defaultsTo: true) |
| 357 ..addOption('runtime-dir', | 365 ..addOption('runtime-dir', |
| 358 help: 'Where to find dev_compiler\'s runtime files', defaultsTo: null) | 366 help: 'Where to find dev_compiler\'s runtime files', defaultsTo: null) |
| 359 | 367 |
| 360 // general options | 368 // general options |
| 361 ..addFlag('help', abbr: 'h', help: 'Display this message') | 369 ..addFlag('help', abbr: 'h', help: 'Display this message') |
| 362 ..addFlag('server', help: 'Run as a development server.', defaultsTo: false) | 370 ..addFlag('server', help: 'Run as a development server.', defaultsTo: false) |
| 371 ..addFlag('hashing', |
| 372 help: 'Enable hash-based file caching.', defaultsTo: null) |
| 363 ..addOption('host', | 373 ..addOption('host', |
| 364 help: 'Host name or address to serve files from, e.g. --host=0.0.0.0\n' | 374 help: 'Host name or address to serve files from, e.g. --host=0.0.0.0\n' |
| 365 'to listen on all interfaces (used only when --serve is on)', | 375 'to listen on all interfaces (used only when --serve is on)', |
| 366 defaultsTo: 'localhost') | 376 defaultsTo: 'localhost') |
| 367 ..addOption('port', | 377 ..addOption('port', |
| 368 help: 'Port to serve files from (used only when --serve is on)', | 378 help: 'Port to serve files from (used only when --serve is on)', |
| 369 defaultsTo: '8080') | 379 defaultsTo: '8080') |
| 370 ..addFlag('force-compile', | 380 ..addFlag('force-compile', |
| 371 help: 'Compile code with static errors', defaultsTo: false) | 381 help: 'Compile code with static errors', defaultsTo: false) |
| 372 ..addOption('log', abbr: 'l', help: 'Logging level (defaults to severe)') | 382 ..addOption('log', abbr: 'l', help: 'Logging level (defaults to severe)') |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 420 // The pub-cache directory is two levels up, but we verify that the layout | 430 // The pub-cache directory is two levels up, but we verify that the layout |
| 421 // looks correct. | 431 // looks correct. |
| 422 if (path.basename(dir) != 'dev_compiler') return null; | 432 if (path.basename(dir) != 'dev_compiler') return null; |
| 423 dir = path.dirname(dir); | 433 dir = path.dirname(dir); |
| 424 if (path.basename(dir) != 'global_packages') return null; | 434 if (path.basename(dir) != 'global_packages') return null; |
| 425 dir = path.dirname(dir); | 435 dir = path.dirname(dir); |
| 426 return path.join(dir, cacheDir, 'lib', 'runtime'); | 436 return path.join(dir, cacheDir, 'lib', 'runtime'); |
| 427 } | 437 } |
| 428 return null; | 438 return null; |
| 429 } | 439 } |
| OLD | NEW |