Skip to content

Commit

Permalink
Add some help messages to tool/task.dart (#3707)
Browse files Browse the repository at this point in the history
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`
  • Loading branch information
srawlins authored Mar 8, 2024
1 parent 4f84967 commit 3d56168
Showing 1 changed file with 55 additions and 5 deletions.
60 changes: 55 additions & 5 deletions tool/task.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,15 @@ void main(List<String> args) async {
..addCommand('buildbot')
..addCommand('clean')
..addCommand('compare')
..addCommand('help')
..addCommand('test')
..addCommand('try-publish')
..addCommand('validate');
parser.addCommand('doc')
..addOption('name')
..addOption('version')
..addFlag('stats');
parser.addCommand('serve')
var docCommand = parser.addCommand('doc')
..addOption('name', help: 'package name')
..addOption('version', help: 'package version')
..addFlag('stats', help: 'print runtime stats');
var serveCommand = parser.addCommand('serve')
..addOption('name')
..addOption('version');

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

docUsage = docCommand.usage;
serveUsage = serveCommand.usage;

return await switch (commandResults.name) {
'analyze' => runAnalyze(commandResults),
'build' => runBuild(commandResults),
'buildbot' => runBuildbot(),
'clean' => runClean(),
'compare' => runCompare(commandResults),
'doc' => runDoc(commandResults),
'help' => runHelp(commandResults),
'serve' => runServe(commandResults),
'test' => runTest(),
'try-publish' => runTryPublish(),
Expand All @@ -58,6 +63,9 @@ void main(List<String> args) async {
};
}

late String docUsage;
late String serveUsage;

String _getPackageVersion() {
var pubspec = File('pubspec.yaml');
if (!pubspec.existsSync()) {
Expand Down Expand Up @@ -288,6 +296,7 @@ Future<void> runDoc(ArgResults commandResults) async {
var stats = commandResults['stats'];
await switch (target) {
'flutter' => docFlutter(withStats: stats),
'help' => _docHelp(),
'package' => _docPackage(commandResults, withStats: stats),
'sdk' => docSdk(),
'testing-package' => docTestingPackage(),
Expand Down Expand Up @@ -360,6 +369,14 @@ Future<Iterable<Map<String, Object?>>> _docFlutter({
final Directory flutterDir =
Directory.systemTemp.createTempSync('flutter').absolute;

Future<void> _docHelp() async {
print('''
Usage:
dart tool/task.dart doc [flutter|package|sdk|testing-package]
$docUsage
''');
}

Future<void> _docPackage(
ArgResults commandResults, {
bool withStats = false,
Expand Down Expand Up @@ -577,13 +594,38 @@ String get _dartdocOriginalBranch {
return branch;
}

Future<void> runHelp(ArgResults commandResults) async {
if (commandResults.rest.isEmpty) {
// TODO(srawlins): Add more help for more individual commands.
print('''
Usage:
dart tool/task.dart [analyze|build|buildbot|clean|compare|doc|help|serve|test|tryp-publish|validate] options...
Help usage:
dart tool/task.dart help [doc|serve]
''');
return;
}
if (commandResults.rest.length != 1) {
throw ArgumentError('"help" command requires a single command name.');
}
var command = commandResults.rest.single;
return switch (command) {
'doc' => _docHelp(),
'serve' => _serveHelp(),
_ => throw UnimplementedError(
'Unknown command: "$command", or no specific help text'),
};
}

Future<void> runServe(ArgResults commandResults) async {
if (commandResults.rest.length != 1) {
throw ArgumentError('"serve" command requires a single target.');
}
var target = commandResults.rest.single;
await switch (target) {
'flutter' => serveFlutterDocs(),
'help' => _serveHelp(),
'package' => _servePackageDocs(commandResults),
'sdk' => serveSdkDocs(),
'testing-package' => serveTestingPackageDocs(),
Expand All @@ -608,6 +650,14 @@ Future<void> serveFlutterDocs() async {
]);
}

Future<void> _serveHelp() async {
print('''
Usage:
dart tool/task.dart serve [flutter|package|sdk|testing-package]
$docUsage
''');
}

Future<void> _servePackageDocs(ArgResults commandResults) async {
var name = commandResults['name'] as String;
var version = commandResults['version'] as String?;
Expand Down

0 comments on commit 3d56168

Please sign in to comment.