Chromium Code Reviews| 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..7fc6ba92f558625e4db578da97f1449d321c3593 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,59 @@ 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 ? null : currentDirectory.resolve(packages), |
| + packagesDiscoveryProvider: findPackages, |
| + platformConfigUri: |
| + platformConfig != null ? libraryRoot.resolve(platformConfig) : null); |
|
Harry Terkelsen
2016/08/30 16:31:50
nit: be consistent with the above ternary for pack
Johnni Winther
2016/08/31 08:49:51
Done.
|
| - 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) { |
|
Harry Terkelsen
2016/08/30 16:31:50
so if library == null then the uri points to a par
Johnni Winther
2016/08/31 08:49:51
Done.
|
| + 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()); |
| } |