mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 07:44:10 +00:00
Fix rustpkg help
handling
In general, you could 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. This commit attempts to fix this by making Help a real Command, and making the handing of it explicit.
This commit is contained in:
parent
f411b94ce1
commit
e01abfe432
@ -229,12 +229,13 @@ pub enum Command {
|
||||
BuildCmd,
|
||||
CleanCmd,
|
||||
DoCmd,
|
||||
HelpCmd,
|
||||
InfoCmd,
|
||||
InitCmd,
|
||||
InstallCmd,
|
||||
ListCmd,
|
||||
PreferCmd,
|
||||
TestCmd,
|
||||
InitCmd,
|
||||
UninstallCmd,
|
||||
UnpreferCmd,
|
||||
}
|
||||
@ -246,6 +247,7 @@ impl FromStr for Command {
|
||||
&"build" => Some(BuildCmd),
|
||||
&"clean" => Some(CleanCmd),
|
||||
&"do" => Some(DoCmd),
|
||||
&"help" => Some(HelpCmd),
|
||||
&"info" => Some(InfoCmd),
|
||||
&"install" => Some(InstallCmd),
|
||||
&"list" => Some(ListCmd),
|
||||
|
@ -43,7 +43,7 @@ use workspace::{each_pkg_parent_workspace, pkg_parent_workspaces, cwd_to_workspa
|
||||
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 @@ impl CtxMethods for BuildContext {
|
||||
|
||||
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();
|
||||
}
|
||||
|
@ -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(),
|
||||
|
Loading…
Reference in New Issue
Block a user