Index: tools/gardening/bin/status_summary.dart |
diff --git a/tools/gardening/bin/status_summary.dart b/tools/gardening/bin/status_summary.dart |
index a30b49ca71d0d85fa5abf4c89b5c69bf827cf20b..8663469472126c32f135875f42959ea5aea5388e 100644 |
--- a/tools/gardening/bin/status_summary.dart |
+++ b/tools/gardening/bin/status_summary.dart |
@@ -12,20 +12,31 @@ import 'dart:io'; |
import 'package:args/args.dart'; |
import 'package:gardening/src/util.dart'; |
+void help(ArgParser argParser) { |
+ print('Prints all status-file entries for the given tests.'); |
+ print('The test-names must be a substring (or full match) of the lines in '); |
+ print('the status file. They can not be fully qualified'); |
+ print('Usage: status_summary [options] <test-name1> [<test-name2> ...]'); |
+ print('where options are:'); |
+ print(argParser.usage); |
+} |
+ |
main(List<String> args) async { |
ArgParser argParser = createArgParser(); |
ArgResults argResults = argParser.parse(args); |
processArgResults(argResults); |
- if (argResults.rest.length == 0) { |
- print('Usage: status_summary [options] <test-name1> [<test-name2> ...]'); |
- print('where options are:'); |
- print(argParser.usage); |
+ if (argResults.rest.length == 0 || argResults['help']) { |
+ help(argParser); |
+ if (argResults['help']) return; |
exit(1); |
} |
int maxStatusWidth = 0; |
int maxConfigWidth = 0; |
- List<Uri> statusFiles = await findStatusFiles('tests'); |
+ Directory testDirectory = findTestDirectory('tests'); |
+ List<Uri> statusFiles = await findStatusFiles(testDirectory); |
+ Directory pkgDirectory = findTestDirectory('pkg'); |
+ statusFiles.addAll(await findStatusFiles(pkgDirectory)); |
Map<String, List<StatusFile>> statusMap = <String, List<StatusFile>>{}; |
for (Uri uri in statusFiles) { |
Map<String, StatusFile> currentMap = <String, StatusFile>{}; |
@@ -79,11 +90,20 @@ main(List<String> args) async { |
}); |
} |
+/// Finds the test directory. |
+/// |
+/// First looks at a test-directory that is relative to the current |
+Directory findTestDirectory(String directoryName) { |
+ var directory = new Directory(directoryName); |
+ if (directory.existsSync()) return directory; |
+ return new Directory.fromUri( |
+ Platform.script.resolve("../../../$directoryName")); |
+} |
+ |
/// Returns the [Uri]s for all `.status` files in [path] and subdirectories. |
-Future<List<Uri>> findStatusFiles(String path) async { |
+Future<List<Uri>> findStatusFiles(Directory testDirectory) async { |
List<Uri> statusFiles = <Uri>[]; |
- await for (FileSystemEntity entity |
- in new Directory(path).list(recursive: true)) { |
+ await for (FileSystemEntity entity in testDirectory.list(recursive: true)) { |
if (entity.path.endsWith('.status')) { |
statusFiles.add(entity.uri); |
} |