Index: pkg/compiler/lib/src/dart2js_resolver.dart |
diff --git a/pkg/compiler/bin/resolver.dart b/pkg/compiler/lib/src/dart2js_resolver.dart |
similarity index 51% |
copy from pkg/compiler/bin/resolver.dart |
copy to pkg/compiler/lib/src/dart2js_resolver.dart |
index d5b56da25d3c58093f18c0855fcf61658755ec48..2bf460eefd9c656c880d0a2b4014598b39000db7 100644 |
--- a/pkg/compiler/bin/resolver.dart |
+++ b/pkg/compiler/lib/src/dart2js_resolver.dart |
@@ -3,8 +3,8 @@ |
// BSD-style license that can be found in the LICENSE file. |
import 'dart:io'; |
+import 'dart:async'; |
-import 'package:args/args.dart'; |
import 'package:compiler/src/apiimpl.dart'; |
import 'package:compiler/src/filenames.dart'; |
import 'package:compiler/src/null_compiler_output.dart'; |
@@ -13,74 +13,60 @@ import 'package:compiler/src/serialization/json_serializer.dart'; |
import 'package:compiler/src/source_file_provider.dart'; |
import 'package:package_config/discovery.dart'; |
-main(var argv) async { |
- var parser = new ArgParser(); |
- parser.addOption('deps', abbr: 'd', allowMultiple: true); |
- parser.addOption('out', abbr: 'o'); |
- parser.addOption('library-root', abbr: 'l'); |
- parser.addOption('packages', abbr: 'p'); |
- parser.addOption('bazel-paths', abbr: 'I', allowMultiple: true); |
- var args = parser.parse(argv); |
- |
- var resolutionInputs = args['deps'] |
+Future<String> resolve(List<Uri> inputs, |
+ {List<String> deps: const <String>[], |
+ List<String> bazelSearchPaths, |
+ String root, |
+ String packages, |
+ Uri packageRoot, |
+ String platformConfig}) async { |
+ var resolutionInputs = deps |
.map((uri) => currentDirectory.resolve(nativeToUriPath(uri))) |
.toList(); |
- var root = args['library-root']; |
var libraryRoot = root == null |
? Platform.script.resolve('../../../sdk/') |
: currentDirectory.resolve(nativeToUriPath(root)); |
var options = new CompilerOptions( |
libraryRoot: libraryRoot, |
- packageConfig: args['packages'] == null |
- ? null |
- : currentDirectory.resolve(args['packages']), |
resolveOnly: true, |
+ analyzeMain: true, |
resolutionInputs: resolutionInputs, |
- packagesDiscoveryProvider: findPackages); |
+ packageRoot: packageRoot, |
+ packageConfig: |
+ packages != null ? currentDirectory.resolve(packages) : null, |
+ packagesDiscoveryProvider: findPackages, |
+ platformConfigUri: |
+ platformConfig != null ? libraryRoot.resolve(platformConfig) : null); |
- var bazelSearchPaths = args['bazel-paths']; |
var inputProvider = bazelSearchPaths != null |
? new BazelInputProvider(bazelSearchPaths) |
: new CompilerSourceFileProvider(); |
var outputProvider = const NullCompilerOutput(); |
var diagnostics = new FormattingDiagnosticHandler(inputProvider) |
- ..enableColors = true; |
+ ..enableColors = !Platform.isWindows; |
var compiler = |
new CompilerImpl(inputProvider, outputProvider, diagnostics, options); |
- if (args.rest.isEmpty) { |
- print('missing input files'); |
- exit(1); |
- } |
- |
- var inputs = args.rest |
- .map((uri) => currentDirectory.resolve(nativeToUriPath(uri))) |
- .toList(); |
- |
await compiler.setupSdk(); |
await compiler.setupPackages(inputs.first); |
- for (var library in inputs) { |
- await compiler.libraryLoader.loadLibrary(library); |
+ var librariesToSerialize = []; |
+ for (var uri in inputs) { |
+ var library = await compiler.analyzeUri(uri); |
+ if (library != null) { |
+ // [library] is `null` if [uri] is a part file. |
+ librariesToSerialize.add(library); |
+ } |
} |
- for (var library in inputs) { |
- compiler.fullyEnqueueLibrary(compiler.libraryLoader.lookupLibrary(library), |
- compiler.enqueuer.resolution); |
+ if (librariesToSerialize.isEmpty) { |
+ print('no library input files'); |
+ exit(1); |
} |
- compiler.processQueue(compiler.enqueuer.resolution, null); |
- |
- var librariesToSerialize = |
- inputs.map((lib) => compiler.libraryLoader.lookupLibrary(lib)).toList(); |
- |
var serializer = |
compiler.serialization.createSerializer(librariesToSerialize); |
- var text = serializer.toText(const JsonSerializationEncoder()); |
- |
- var outFile = args['out'] ?? 'out.data'; |
- |
- await new File(outFile).writeAsString(text); |
+ return serializer.toText(const JsonSerializationEncoder()); |
} |