@@ -26,14 +26,15 @@ void main(List<String> args) async {
26
26
..addCommand ('buildbot' )
27
27
..addCommand ('clean' )
28
28
..addCommand ('compare' )
29
+ ..addCommand ('help' )
29
30
..addCommand ('test' )
30
31
..addCommand ('try-publish' )
31
32
..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' )
37
38
..addOption ('name' )
38
39
..addOption ('version' );
39
40
@@ -43,13 +44,17 @@ void main(List<String> args) async {
43
44
return ;
44
45
}
45
46
47
+ docUsage = docCommand.usage;
48
+ serveUsage = serveCommand.usage;
49
+
46
50
return await switch (commandResults.name) {
47
51
'analyze' => runAnalyze (commandResults),
48
52
'build' => runBuild (commandResults),
49
53
'buildbot' => runBuildbot (),
50
54
'clean' => runClean (),
51
55
'compare' => runCompare (commandResults),
52
56
'doc' => runDoc (commandResults),
57
+ 'help' => runHelp (commandResults),
53
58
'serve' => runServe (commandResults),
54
59
'test' => runTest (),
55
60
'try-publish' => runTryPublish (),
@@ -58,6 +63,9 @@ void main(List<String> args) async {
58
63
};
59
64
}
60
65
66
+ late String docUsage;
67
+ late String serveUsage;
68
+
61
69
String _getPackageVersion () {
62
70
var pubspec = File ('pubspec.yaml' );
63
71
if (! pubspec.existsSync ()) {
@@ -288,6 +296,7 @@ Future<void> runDoc(ArgResults commandResults) async {
288
296
var stats = commandResults['stats' ];
289
297
await switch (target) {
290
298
'flutter' => docFlutter (withStats: stats),
299
+ 'help' => _docHelp (),
291
300
'package' => _docPackage (commandResults, withStats: stats),
292
301
'sdk' => docSdk (),
293
302
'testing-package' => docTestingPackage (),
@@ -360,6 +369,14 @@ Future<Iterable<Map<String, Object?>>> _docFlutter({
360
369
final Directory flutterDir =
361
370
Directory .systemTemp.createTempSync ('flutter' ).absolute;
362
371
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
+
363
380
Future <void > _docPackage (
364
381
ArgResults commandResults, {
365
382
bool withStats = false ,
@@ -577,13 +594,38 @@ String get _dartdocOriginalBranch {
577
594
return branch;
578
595
}
579
596
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
+
580
621
Future <void > runServe (ArgResults commandResults) async {
581
622
if (commandResults.rest.length != 1 ) {
582
623
throw ArgumentError ('"serve" command requires a single target.' );
583
624
}
584
625
var target = commandResults.rest.single;
585
626
await switch (target) {
586
627
'flutter' => serveFlutterDocs (),
628
+ 'help' => _serveHelp (),
587
629
'package' => _servePackageDocs (commandResults),
588
630
'sdk' => serveSdkDocs (),
589
631
'testing-package' => serveTestingPackageDocs (),
@@ -608,6 +650,14 @@ Future<void> serveFlutterDocs() async {
608
650
]);
609
651
}
610
652
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
+
611
661
Future <void > _servePackageDocs (ArgResults commandResults) async {
612
662
var name = commandResults['name' ] as String ;
613
663
var version = commandResults['version' ] as String ? ;
0 commit comments