| 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 14 matching lines...) Expand all Loading... |
| 25 | 25 |
| 26 /// Package root when resolving 'package:' urls the standard way. | 26 /// Package root when resolving 'package:' urls the standard way. |
| 27 final String packageRoot; | 27 final String packageRoot; |
| 28 | 28 |
| 29 /// List of paths used for the multi-package resolver. | 29 /// List of paths used for the multi-package resolver. |
| 30 final List<String> packagePaths; | 30 final List<String> packagePaths; |
| 31 | 31 |
| 32 /// List of additional non-Dart resources to resolve and serve. | 32 /// List of additional non-Dart resources to resolve and serve. |
| 33 final List<String> resources; | 33 final List<String> resources; |
| 34 | 34 |
| 35 /// File where to start compilation from. | |
| 36 // TODO(jmesserly): this is used to configure SourceFactory resolvers only | |
| 37 // when [useImplicitHtml] is set. Probably useImplicitHtml should be factored | |
| 38 // out into ServerOptions or something along those lines. | |
| 39 final String entryPointFile; | |
| 40 | |
| 41 // True if the resolver should implicitly provide an html entry point. | 35 // True if the resolver should implicitly provide an html entry point. |
| 42 final bool useImplicitHtml; | 36 final bool useImplicitHtml; |
| 43 static const String implicitHtmlFile = 'index.html'; | 37 static const String implicitHtmlFile = 'index.html'; |
| 44 | 38 |
| 45 /// Whether to use a mock-sdk during compilation. | 39 /// Whether to use a mock-sdk during compilation. |
| 46 final bool useMockSdk; | 40 final bool useMockSdk; |
| 47 | 41 |
| 48 /// Path to the dart-sdk. Null if `useMockSdk` is true or if the path couldn't | 42 /// Path to the dart-sdk. Null if `useMockSdk` is true or if the path couldn't |
| 49 /// be determined | 43 /// be determined |
| 50 final String dartSdkPath; | 44 final String dartSdkPath; |
| 51 | 45 |
| 52 const SourceResolverOptions({this.useMockSdk: false, this.dartSdkPath, | 46 const SourceResolverOptions({this.useMockSdk: false, this.dartSdkPath, |
| 53 this.useMultiPackage: false, this.customUrlMappings: const {}, | 47 this.useMultiPackage: false, this.customUrlMappings: const {}, |
| 54 this.packageRoot: 'packages/', this.packagePaths: const <String>[], | 48 this.packageRoot: 'packages/', this.packagePaths: const <String>[], |
| 55 this.resources: const <String>[], this.entryPointFile: null, | 49 this.resources: const <String>[], this.useImplicitHtml: false}); |
| 56 this.useImplicitHtml: false}); | |
| 57 } | 50 } |
| 58 | 51 |
| 59 // TODO(jmesserly): refactor all codegen options here. | 52 // TODO(jmesserly): refactor all codegen options here. |
| 60 class CodegenOptions { | 53 class CodegenOptions { |
| 61 /// Whether to emit the source map files. | 54 /// Whether to emit the source map files. |
| 62 final bool emitSourceMaps; | 55 final bool emitSourceMaps; |
| 63 | 56 |
| 64 /// Whether to force compilation of code with static errors. | 57 /// Whether to force compilation of code with static errors. |
| 65 final bool forceCompile; | 58 final bool forceCompile; |
| 66 | 59 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 final int port; | 102 final int port; |
| 110 | 103 |
| 111 /// Host name or address for HTTP server when [serverMode] is on. | 104 /// Host name or address for HTTP server when [serverMode] is on. |
| 112 final String host; | 105 final String host; |
| 113 | 106 |
| 114 /// Location for runtime files, such as `dart_runtime.js`. By default this is | 107 /// Location for runtime files, such as `dart_runtime.js`. By default this is |
| 115 /// inferred to be under `lib/runtime/` in the location of the `dev_compiler` | 108 /// inferred to be under `lib/runtime/` in the location of the `dev_compiler` |
| 116 /// package (if we can infer where that is located). | 109 /// package (if we can infer where that is located). |
| 117 final String runtimeDir; | 110 final String runtimeDir; |
| 118 | 111 |
| 112 final List<String> inputs; |
| 113 |
| 119 CompilerOptions({this.strongOptions: const StrongModeOptions(), | 114 CompilerOptions({this.strongOptions: const StrongModeOptions(), |
| 120 this.sourceOptions: const SourceResolverOptions(), | 115 this.sourceOptions: const SourceResolverOptions(), |
| 121 this.codegenOptions: const CodegenOptions(), this.checkSdk: false, | 116 this.codegenOptions: const CodegenOptions(), this.checkSdk: false, |
| 122 this.dumpInfo: false, this.dumpInfoFile, this.useColors: true, | 117 this.dumpInfo: false, this.dumpInfoFile, this.useColors: true, |
| 123 this.help: false, this.logLevel: Level.SEVERE, this.serverMode: false, | 118 this.help: false, this.logLevel: Level.SEVERE, this.serverMode: false, |
| 124 this.enableHashing: false, this.widget: true, this.host: 'localhost', | 119 this.enableHashing: false, this.widget: true, this.host: 'localhost', |
| 125 this.port: 8080, this.runtimeDir}); | 120 this.port: 8080, this.runtimeDir, this.inputs}); |
| 126 } | 121 } |
| 127 | 122 |
| 128 /// Parses options from the command-line | 123 /// Parses options from the command-line |
| 129 CompilerOptions parseOptions(List<String> argv) { | 124 CompilerOptions parseOptions(List<String> argv) { |
| 130 ArgResults args = argParser.parse(argv); | 125 ArgResults args = argParser.parse(argv); |
| 131 bool showUsage = args['help']; | 126 bool showUsage = args['help']; |
| 132 | 127 |
| 133 var serverMode = args['server']; | 128 var serverMode = args['server']; |
| 134 var enableHashing = args['hashing']; | 129 var enableHashing = args['hashing']; |
| 135 if (enableHashing == null) { | 130 if (enableHashing == null) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 162 var customUrlMappings = <String, String>{}; | 157 var customUrlMappings = <String, String>{}; |
| 163 for (var mapping in args['url-mapping']) { | 158 for (var mapping in args['url-mapping']) { |
| 164 var splitMapping = mapping.split(','); | 159 var splitMapping = mapping.split(','); |
| 165 if (splitMapping.length != 2) { | 160 if (splitMapping.length != 2) { |
| 166 showUsage = true; | 161 showUsage = true; |
| 167 continue; | 162 continue; |
| 168 } | 163 } |
| 169 customUrlMappings[splitMapping[0]] = splitMapping[1]; | 164 customUrlMappings[splitMapping[0]] = splitMapping[1]; |
| 170 } | 165 } |
| 171 | 166 |
| 172 var entryPointFile = args.rest.length == 0 ? null : args.rest.first; | 167 if (serverMode && args.rest.length != 1) showUsage = true; |
| 173 | 168 |
| 174 return new CompilerOptions( | 169 return new CompilerOptions( |
| 175 codegenOptions: new CodegenOptions( | 170 codegenOptions: new CodegenOptions( |
| 176 emitSourceMaps: args['source-maps'], | 171 emitSourceMaps: args['source-maps'], |
| 177 forceCompile: args['force-compile'] || serverMode, | 172 forceCompile: args['force-compile'] || serverMode, |
| 178 outputDir: outputDir), | 173 outputDir: outputDir), |
| 179 sourceOptions: new SourceResolverOptions( | 174 sourceOptions: new SourceResolverOptions( |
| 180 useMockSdk: args['mock-sdk'], | 175 useMockSdk: args['mock-sdk'], |
| 181 dartSdkPath: sdkPath, | 176 dartSdkPath: sdkPath, |
| 182 entryPointFile: entryPointFile, | 177 useImplicitHtml: serverMode && |
| 183 useImplicitHtml: serverMode && entryPointFile.endsWith('.dart'), | 178 args.rest.length == 1 && |
| 179 args.rest[0].endsWith('.dart'), |
| 184 customUrlMappings: customUrlMappings, | 180 customUrlMappings: customUrlMappings, |
| 185 useMultiPackage: args['use-multi-package'], | 181 useMultiPackage: args['use-multi-package'], |
| 186 packageRoot: args['package-root'], | 182 packageRoot: args['package-root'], |
| 187 packagePaths: args['package-paths'].split(','), | 183 packagePaths: args['package-paths'].split(','), |
| 188 resources: args['resources'] | 184 resources: args['resources'] |
| 189 .split(',') | 185 .split(',') |
| 190 .where((s) => s.isNotEmpty) | 186 .where((s) => s.isNotEmpty) |
| 191 .toList()), | 187 .toList()), |
| 192 strongOptions: new StrongModeOptions.fromArguments(args), | 188 strongOptions: new StrongModeOptions.fromArguments(args), |
| 193 checkSdk: args['sdk-check'], | 189 checkSdk: args['sdk-check'], |
| 194 dumpInfo: dumpInfo, | 190 dumpInfo: dumpInfo, |
| 195 dumpInfoFile: args['dump-info-file'], | 191 dumpInfoFile: args['dump-info-file'], |
| 196 useColors: useColors, | 192 useColors: useColors, |
| 197 help: showUsage, | 193 help: showUsage, |
| 198 logLevel: logLevel, | 194 logLevel: logLevel, |
| 199 serverMode: serverMode, | 195 serverMode: serverMode, |
| 200 enableHashing: enableHashing, | 196 enableHashing: enableHashing, |
| 201 widget: args['widget'], | 197 widget: args['widget'], |
| 202 host: args['host'], | 198 host: args['host'], |
| 203 port: int.parse(args['port']), | 199 port: int.parse(args['port']), |
| 204 runtimeDir: runtimeDir); | 200 runtimeDir: runtimeDir, |
| 201 inputs: args.rest); |
| 205 } | 202 } |
| 206 | 203 |
| 207 final ArgParser argParser = StrongModeOptions.addArguments(new ArgParser() | 204 final ArgParser argParser = StrongModeOptions.addArguments(new ArgParser() |
| 208 ..addFlag('sdk-check', | 205 ..addFlag('sdk-check', |
| 209 abbr: 's', help: 'Typecheck sdk libs', defaultsTo: false) | 206 abbr: 's', help: 'Typecheck sdk libs', defaultsTo: false) |
| 210 ..addFlag('mock-sdk', | 207 ..addFlag('mock-sdk', |
| 211 abbr: 'm', help: 'Use a mock Dart SDK', defaultsTo: false) | 208 abbr: 'm', help: 'Use a mock Dart SDK', defaultsTo: false) |
| 212 | 209 |
| 213 // input/output options | 210 // input/output options |
| 214 ..addOption('out', abbr: 'o', help: 'Output directory', defaultsTo: null) | 211 ..addOption('out', abbr: 'o', help: 'Output directory', defaultsTo: null) |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 // The pub-cache directory is two levels up, but we verify that the layout | 301 // The pub-cache directory is two levels up, but we verify that the layout |
| 305 // looks correct. | 302 // looks correct. |
| 306 if (path.basename(dir) != 'dev_compiler') return null; | 303 if (path.basename(dir) != 'dev_compiler') return null; |
| 307 dir = path.dirname(dir); | 304 dir = path.dirname(dir); |
| 308 if (path.basename(dir) != 'global_packages') return null; | 305 if (path.basename(dir) != 'global_packages') return null; |
| 309 dir = path.dirname(dir); | 306 dir = path.dirname(dir); |
| 310 return path.join(dir, cacheDir, 'lib', 'runtime'); | 307 return path.join(dir, cacheDir, 'lib', 'runtime'); |
| 311 } | 308 } |
| 312 return null; | 309 return null; |
| 313 } | 310 } |
| OLD | NEW |