mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
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:
@@ -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
@@ -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);
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user