| Index: web/main.dart
|
| diff --git a/bin/dartdevc.dart b/web/main.dart
|
| similarity index 63%
|
| copy from bin/dartdevc.dart
|
| copy to web/main.dart
|
| index 98c3e450a2eb691b46021867f761740fa085c7f5..32d1ba6583c4c9e5dce187a7361eed8a85f0a4cd 100755
|
| --- a/bin/dartdevc.dart
|
| +++ b/web/main.dart
|
| @@ -35,60 +35,41 @@
|
| /// local file servers, and users have an expectation of it now, even though
|
| /// it doesn't scale to typical apps that need their own real servers.
|
|
|
| +@JS()
|
| +library dev_compiler.web.main;
|
| +
|
| import 'dart:async';
|
| -import 'dart:io';
|
| -import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
|
| +
|
| import 'package:args/command_runner.dart';
|
| -import 'package:bazel_worker/bazel_worker.dart';
|
| -import 'package:dev_compiler/src/compiler/command.dart';
|
| +import 'package:js/js.dart';
|
|
|
| -Future main(List<String> args) async {
|
| - // Always returns a new modifiable list.
|
| - args = _preprocessArgs(args);
|
| +import 'web_command.dart';
|
|
|
| - if (args.contains('--persistent_worker')) {
|
| - new _CompilerWorker(args..remove('--persistent_worker')).run();
|
| - } else {
|
| - exitCode = await _runCommand(args);
|
| - }
|
| +@JS()
|
| +external set compileDartExpression(Function function);
|
| +
|
| +typedef String CompileFn(String dart);
|
| +typedef void OnLoadFn(CompileFn compile);
|
| +
|
| +Future main() async {
|
| + var args = ['compile'];
|
| + _runCommand((result) {
|
| + compileDartExpression = allowInterop(result);
|
| + }, args);
|
| }
|
|
|
| /// Runs a single compile command, and returns an exit code.
|
| -Future<int> _runCommand(List<String> args,
|
| +Future<int> _runCommand(OnLoadFn onload, List<String> args,
|
| {MessageHandler messageHandler}) async {
|
| try {
|
| - if (args.isEmpty || args.first != 'compile' && args.first != 'help') {
|
| - // TODO(jmesserly): we should deprecate the commands. For now they are
|
| - // still supported for backwards compatibility.
|
| - args.insert(0, 'compile');
|
| - }
|
| var runner = new CommandRunner('dartdevc', 'Dart Development Compiler');
|
| - runner.addCommand(new CompileCommand(messageHandler: messageHandler));
|
| + runner
|
| + .addCommand(new WebCompileCommand(onload, messageHandler: messageHandler));
|
| await runner.run(args);
|
| } catch (e, s) {
|
| return _handleError(e, s, args, messageHandler: messageHandler);
|
| }
|
| - return EXIT_CODE_OK;
|
| -}
|
| -
|
| -/// Runs the compiler worker loop.
|
| -class _CompilerWorker extends AsyncWorkerLoop {
|
| - /// The original args supplied to the executable.
|
| - final List<String> _startupArgs;
|
| -
|
| - _CompilerWorker(this._startupArgs) : super();
|
| -
|
| - /// Performs each individual work request.
|
| - Future<WorkResponse> performRequest(WorkRequest request) async {
|
| - var args = _startupArgs.toList()..addAll(request.arguments);
|
| -
|
| - var output = new StringBuffer();
|
| - var exitCode = await _runCommand(args, messageHandler: output.writeln);
|
| - AnalysisEngine.instance.clearCaches();
|
| - return new WorkResponse()
|
| - ..exitCode = exitCode
|
| - ..output = output.toString();
|
| - }
|
| + return 1;
|
| }
|
|
|
| /// Handles [error] in a uniform fashion. Returns the proper exit code and calls
|
| @@ -123,7 +104,6 @@ int _handleError(dynamic error, dynamic stackTrace, List<String> args,
|
| "any other information that may help us track it down. Thanks!");
|
| messageHandler("");
|
| messageHandler(" dartdevc arguments: " + args.join(' '));
|
| - messageHandler(" dart --version: ${Platform.version}");
|
| messageHandler("");
|
| messageHandler("```");
|
| messageHandler(error);
|
| @@ -132,19 +112,3 @@ int _handleError(dynamic error, dynamic stackTrace, List<String> args,
|
| return 70;
|
| }
|
| }
|
| -
|
| -/// Always returns a new modifiable list.
|
| -///
|
| -/// If the final arg is `@file_path` then read in all the lines of that file
|
| -/// and add those as args.
|
| -///
|
| -/// Bazel actions that support workers must provide all their per-WorkRequest
|
| -/// arguments in a file like this instead of as normal args.
|
| -List<String> _preprocessArgs(List<String> args) {
|
| - args = new List.from(args);
|
| - if (args.isNotEmpty && args.last.startsWith('@')) {
|
| - var fileArg = args.removeLast();
|
| - args.addAll(new File(fileArg.substring(1)).readAsLinesSync());
|
| - }
|
| - return args;
|
| -}
|
|
|