Skip to content

Commit 3d56168

Browse files
authored
Add some help messages to tool/task.dart (#3707)
There has been basically no help text, which doesn't help anyone. :D So now the following invocations work as you'd expect: * `dart tool/task.dart help` * `dart tool/task.dart help doc` * `dart tool/task.dart doc help`
1 parent 4f84967 commit 3d56168

File tree

1 file changed

+55
-5
lines changed

1 file changed

+55
-5
lines changed

Diff for: tool/task.dart

+55-5
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@ void main(List<String> args) async {
2626
..addCommand('buildbot')
2727
..addCommand('clean')
2828
..addCommand('compare')
29+
..addCommand('help')
2930
..addCommand('test')
3031
..addCommand('try-publish')
3132
..addCommand('validate');
32-
parser.addCommand('doc')
33-
..addOption('name')
34-
..addOption('version')
35-
..addFlag('stats');
36-
parser.addCommand('serve')
33+
var docCommand = parser.addCommand('doc')
34+
..addOption('name', help: 'package name')
35+
..addOption('version', help: 'package version')
36+
..addFlag('stats', help: 'print runtime stats');
37+
var serveCommand = parser.addCommand('serve')
3738
..addOption('name')
3839
..addOption('version');
3940

@@ -43,13 +44,17 @@ void main(List<String> args) async {
4344
return;
4445
}
4546

47+
docUsage = docCommand.usage;
48+
serveUsage = serveCommand.usage;
49+
4650
return await switch (commandResults.name) {
4751
'analyze' => runAnalyze(commandResults),
4852
'build' => runBuild(commandResults),
4953
'buildbot' => runBuildbot(),
5054
'clean' => runClean(),
5155
'compare' => runCompare(commandResults),
5256
'doc' => runDoc(commandResults),
57+
'help' => runHelp(commandResults),
5358
'serve' => runServe(commandResults),
5459
'test' => runTest(),
5560
'try-publish' => runTryPublish(),
@@ -58,6 +63,9 @@ void main(List<String> args) async {
5863
};
5964
}
6065

66+
late String docUsage;
67+
late String serveUsage;
68+
6169
String _getPackageVersion() {
6270
var pubspec = File('pubspec.yaml');
6371
if (!pubspec.existsSync()) {
@@ -288,6 +296,7 @@ Future<void> runDoc(ArgResults commandResults) async {
288296
var stats = commandResults['stats'];
289297
await switch (target) {
290298
'flutter' => docFlutter(withStats: stats),
299+
'help' => _docHelp(),
291300
'package' => _docPackage(commandResults, withStats: stats),
292301
'sdk' => docSdk(),
293302
'testing-package' => docTestingPackage(),
@@ -360,6 +369,14 @@ Future<Iterable<Map<String, Object?>>> _docFlutter({
360369
final Directory flutterDir =
361370
Directory.systemTemp.createTempSync('flutter').absolute;
362371

372+
Future<void> _docHelp() async {
373+
print('''
374+
Usage:
375+
dart tool/task.dart doc [flutter|package|sdk|testing-package]
376+
$docUsage
377+
''');
378+
}
379+
363380
Future<void> _docPackage(
364381
ArgResults commandResults, {
365382
bool withStats = false,
@@ -577,13 +594,38 @@ String get _dartdocOriginalBranch {
577594
return branch;
578595
}
579596

597+
Future<void> runHelp(ArgResults commandResults) async {
598+
if (commandResults.rest.isEmpty) {
599+
// TODO(srawlins): Add more help for more individual commands.
600+
print('''
601+
Usage:
602+
dart tool/task.dart [analyze|build|buildbot|clean|compare|doc|help|serve|test|tryp-publish|validate] options...
603+
604+
Help usage:
605+
dart tool/task.dart help [doc|serve]
606+
''');
607+
return;
608+
}
609+
if (commandResults.rest.length != 1) {
610+
throw ArgumentError('"help" command requires a single command name.');
611+
}
612+
var command = commandResults.rest.single;
613+
return switch (command) {
614+
'doc' => _docHelp(),
615+
'serve' => _serveHelp(),
616+
_ => throw UnimplementedError(
617+
'Unknown command: "$command", or no specific help text'),
618+
};
619+
}
620+
580621
Future<void> runServe(ArgResults commandResults) async {
581622
if (commandResults.rest.length != 1) {
582623
throw ArgumentError('"serve" command requires a single target.');
583624
}
584625
var target = commandResults.rest.single;
585626
await switch (target) {
586627
'flutter' => serveFlutterDocs(),
628+
'help' => _serveHelp(),
587629
'package' => _servePackageDocs(commandResults),
588630
'sdk' => serveSdkDocs(),
589631
'testing-package' => serveTestingPackageDocs(),
@@ -608,6 +650,14 @@ Future<void> serveFlutterDocs() async {
608650
]);
609651
}
610652

653+
Future<void> _serveHelp() async {
654+
print('''
655+
Usage:
656+
dart tool/task.dart serve [flutter|package|sdk|testing-package]
657+
$docUsage
658+
''');
659+
}
660+
611661
Future<void> _servePackageDocs(ArgResults commandResults) async {
612662
var name = commandResults['name'] as String;
613663
var version = commandResults['version'] as String?;

0 commit comments

Comments
 (0)