diff --git a/src/librustpkg/context.rs b/src/librustpkg/context.rs index 681ae1dc80780..721cfedd4aabc 100644 --- a/src/librustpkg/context.rs +++ b/src/librustpkg/context.rs @@ -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), diff --git a/src/librustpkg/lib.rs b/src/librustpkg/lib.rs index 135b659871dd7..27d3a3e549a87 100644 --- a/src/librustpkg/lib.rs +++ b/src/librustpkg/lib.rs @@ -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(); } @@ -372,7 +384,7 @@ impl CtxMethods for BuildContext { } PreferCmd => { if args.len() < 1 { - return usage::uninstall(); + return usage::prefer(); } self.prefer(args[0], None); diff --git a/src/librustpkg/usage.rs b/src/librustpkg/usage.rs index a41e99f6d663d..ccc0beafd71ca 100644 --- a/src/librustpkg/usage.rs +++ b/src/librustpkg/usage.rs @@ -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(),