blob: 7ee402750985b955c87197489a94f23deef606fb [file] [log] [blame]
// Copyright (c) 2017, 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.
import 'dart:async';
import 'dart:io';
import 'compare_failures.dart' as compare_failures;
import 'current_summary.dart' as current_summary;
import 'find_shard.dart' as find_shard;
import 'status_summary.dart' as status_summary;
import 'summary.dart' as summary;
typedef Future MainFunction(List<String> args);
Future help(List<String> args) async {
if (args.length == 1 && args[0] == "--help") {
print("This help");
return null;
}
print("A script that combines multiple commands:\n");
for (String command in commands.keys) {
print(command);
print('-' * command.length);
await commands[command](["--help"]);
print("");
}
}
const Map<String, MainFunction> commands = const <String, MainFunction>{
"help": help,
"summary": summary.main,
"compare-failures": compare_failures.main,
"current-summary": current_summary.main,
"status-summary": status_summary.main,
"find-shard": find_shard.main,
};
main(List<String> args) async {
if (args.isEmpty) {
await help([]);
exit(-1);
}
var command = commands[args[0]];
if (command == null) {
await help([]);
exit(-1);
}
command(args.sublist(1));
}