Files
sdk/pkg/front_end/tool/fasta.dart
T
Johnni Winther 34fb48bb8a [kernel,front_end] Migrate first wave of pkg/kernel and pkg/front_end
Migrates libraries dependent only on already migrated libraries.

Change-Id: I0e85ee8dbc2afce031b92e0009e71c206a55af28
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179502
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2021-01-18 15:40:21 +00:00

102 lines
2.8 KiB
Dart

// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart=2.9
import 'dart:io';
import '../test/utils/io_utils.dart' show computeRepoDir;
final String repoDir = computeRepoDir();
final String toolDir = '$repoDir/pkg/front_end/tool/_fasta';
final String kernelBin = '$repoDir/pkg/kernel/bin';
String get dartVm =>
Platform.isWindows ? '$repoDir/sdk/bin/dart.bat' : '$repoDir/sdk/bin/dart';
main(List<String> args) async {
List<String> extraVmArguments = [];
String script;
List<String> scriptArguments = [];
int index = 0;
for (; index < args.length; index++) {
String arg = args[index];
if (arg.startsWith('-')) {
extraVmArguments.add(arg);
} else {
break;
}
}
if (args.length == index) {
stop("No command provided.");
}
String command = args[index++];
List<String> remainingArguments = args.skip(index).toList();
switch (command) {
case 'abcompile':
script = '${toolDir}/abcompile.dart';
break;
case 'compile':
script = '${toolDir}/compile.dart';
break;
case 'compile-platform':
script = '${toolDir}/compile_platform.dart';
break;
case 'log':
script = '${toolDir}/log_analyzer.dart';
break;
case 'logd':
script = '${toolDir}/log_collector.dart';
break;
case 'outline':
script = '${toolDir}/outline.dart';
break;
case 'parser':
script = '${toolDir}/parser.dart';
break;
case 'scanner':
script = '${toolDir}/scanner.dart';
break;
case 'dump-ir':
script = '${kernelBin}/dump.dart';
if (remainingArguments.isEmpty || remainingArguments.length > 2) {
stop("Usage: $command dillfile [output]");
}
break;
case 'testing':
script = '${repoDir}/pkg/testing/bin/testing.dart';
scriptArguments.add('--config=${repoDir}/pkg/front_end/testing.json');
break;
case 'generate-messages':
script = '${toolDir}/generate_messages.dart';
break;
case 'generate-experimental-flags':
script = '${toolDir}/generate_experimental_flags.dart';
break;
default:
stop("'$command' isn't a valid subcommand.");
}
List<String> arguments = [];
arguments.addAll(extraVmArguments);
arguments.add('--enable-asserts');
arguments.add(script);
arguments.addAll(remainingArguments);
arguments.addAll(scriptArguments);
print('Running: ${dartVm} ${arguments.join(' ')}');
Process process = await Process.start(dartVm, arguments,
mode: ProcessStartMode.inheritStdio);
exitCode = await process.exitCode;
}
void stop(String message) {
stderr.write(message);
exit(2);
}