Index: mojo/public/dart/third_party/args/lib/src/help_command.dart |
diff --git a/mojo/public/dart/third_party/args/lib/src/help_command.dart b/mojo/public/dart/third_party/args/lib/src/help_command.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f477b4740e630160700eb34eaee325a9af791726 |
--- /dev/null |
+++ b/mojo/public/dart/third_party/args/lib/src/help_command.dart |
@@ -0,0 +1,53 @@ |
+// Copyright (c) 2014, 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. |
+ |
+library args.help_command; |
+ |
+import '../command_runner.dart'; |
+ |
+/// The built-in help command that's added to every [CommandRunner]. |
+/// |
+/// This command displays help information for the various subcommands. |
+class HelpCommand extends Command { |
+ final name = "help"; |
+ String get description => |
+ "Display help information for ${runner.executableName}."; |
+ String get invocation => "${runner.executableName} help [command]"; |
+ |
+ void run() { |
+ // Show the default help if no command was specified. |
+ if (argResults.rest.isEmpty) { |
+ runner.printUsage(); |
+ return; |
+ } |
+ |
+ // Walk the command tree to show help for the selected command or |
+ // subcommand. |
+ var commands = runner.commands; |
+ var command = null; |
+ var commandString = runner.executableName; |
+ |
+ for (var name in argResults.rest) { |
+ if (commands.isEmpty) { |
+ command.usageException( |
+ 'Command "$commandString" does not expect a subcommand.'); |
+ } |
+ |
+ if (commands[name] == null) { |
+ if (command == null) { |
+ runner.usageException('Could not find a command named "$name".'); |
+ } |
+ |
+ command.usageException( |
+ 'Could not find a subcommand named "$name" for "$commandString".'); |
+ } |
+ |
+ command = commands[name]; |
+ commands = command.subcommands; |
+ commandString += " $name"; |
+ } |
+ |
+ command.printUsage(); |
+ } |
+} |