auto merge of #11470 : eminence/rust/rustpkg_help_test, r=alexcrichton

In general, you can run "rustpkg help <cmd>" to see some specific usage information for <cmd>.  However, this was handled in a very ad-hoc and buggy manner.  For example, running "rustpkg help prefer" would actually show you the usage information for the "uninstall" cmd.  Or "rustpkg help test" would show you the usage information for the "build" command.  Or "rustpkg help list" would just run the "list" command (and not show you anything usage information)

This commit attempts to fix this by making a new HelpCmd (and handling it explicitly)
This commit is contained in:
bors
2014-01-11 10:21:22 -08:00
3 changed files with 21 additions and 3 deletions
+3 -1
View File
@@ -229,12 +229,13 @@ pub enum Command {
BuildCmd,
CleanCmd,
DoCmd,
HelpCmd,
InfoCmd,
InitCmd,
InstallCmd,
ListCmd,
PreferCmd,
TestCmd,
InitCmd,
UninstallCmd,
UnpreferCmd,
}
@@ -246,6 +247,7 @@ fn from_str(s: &str) -> Option<Command> {
&"build" => Some(BuildCmd),
&"clean" => Some(CleanCmd),
&"do" => Some(DoCmd),
&"help" => Some(HelpCmd),
&"info" => Some(InfoCmd),
&"install" => Some(InstallCmd),
&"list" => Some(ListCmd),
+14 -2
View File
@@ -43,7 +43,7 @@
use workspace::determine_destination;
use context::{BuildContext, Trans, Nothing, Pretty, Analysis,
LLVMAssemble, LLVMCompileBitcode};
use context::{Command, BuildCmd, CleanCmd, DoCmd, InfoCmd, InstallCmd, ListCmd,
use context::{Command, BuildCmd, CleanCmd, DoCmd, HelpCmd, InfoCmd, InstallCmd, ListCmd,
PreferCmd, TestCmd, InitCmd, UninstallCmd, UnpreferCmd};
use crate_id::CrateId;
use package_source::PkgSrc;
@@ -314,6 +314,18 @@ fn run(&self, cmd: Command, args: ~[~str]) {
self.do_cmd(args[0].clone(), args[1].clone());
}
HelpCmd => {
if args.len() != 1 {
return usage::general();
}
match FromStr::from_str(args[0]) {
Some(help_cmd) => usage::usage_for_command(help_cmd),
None => {
usage::general();
error(format!("{} is not a recognized command", args[0]))
}
}
}
InfoCmd => {
self.info();
}
@@ -372,7 +384,7 @@ fn run(&self, cmd: Command, args: ~[~str]) {
}
PreferCmd => {
if args.len() < 1 {
return usage::uninstall();
return usage::prefer();
}
self.prefer(args[0], None);
+4
View File
@@ -16,6 +16,9 @@ pub fn general() {
Where <cmd> is one of:
build, clean, do, info, install, list, prefer, test, uninstall, unprefer
For more help on a given command, you can run:
rustpkg help <cmd>
Options:
-h, --help Display this message
@@ -162,6 +165,7 @@ pub fn usage_for_command(command: Command){
BuildCmd => build(),
CleanCmd => clean(),
DoCmd => do_cmd(),
HelpCmd => general(),
InfoCmd => info(),
InstallCmd => install(),
ListCmd => list(),