diff --git a/Cargo.lock b/Cargo.lock index ed8cd86dae5..4f0757617a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -270,6 +270,7 @@ dependencies = [ "cargo-test-support", "cargo-util", "clap", + "color-print", "crates-io", "curl", "curl-sys", @@ -540,6 +541,27 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807" +[[package]] +name = "color-print" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2a5e6504ed8648554968650feecea00557a3476bc040d0ffc33080e66b646d0" +dependencies = [ + "color-print-proc-macro", +] + +[[package]] +name = "color-print-proc-macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51beaa537d73d2d1ff34ee70bc095f170420ab2ec5d687ecd3ec2b0d092514b" +dependencies = [ + "nom", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "colorchoice" version = "1.0.0" diff --git a/Cargo.toml b/Cargo.toml index b6edc38ace5..d80e755dd4b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,7 @@ cargo-test-support = { path = "crates/cargo-test-support" } cargo-util = { version = "0.2.6", path = "crates/cargo-util" } cargo_metadata = "0.17.0" clap = "4.4.2" +color-print = "0.3.4" core-foundation = { version = "0.9.3", features = ["mac_os_10_7_support"] } crates-io = { version = "0.39.0", path = "crates/crates-io" } criterion = { version = "0.5.1", features = ["html_reports"] } @@ -129,6 +130,7 @@ cargo-credential-libsecret.workspace = true cargo-credential-macos-keychain.workspace = true cargo-credential-wincred.workspace = true cargo-util.workspace = true +color-print.workspace = true clap = { workspace = true, features = ["wrap_help"] } crates-io.workspace = true curl = { workspace = true, features = ["http2"] } diff --git a/src/bin/cargo/cli.rs b/src/bin/cargo/cli.rs index d39dce754e5..dc0a34bfa50 100644 --- a/src/bin/cargo/cli.rs +++ b/src/bin/cargo/cli.rs @@ -513,10 +513,23 @@ impl GlobalArgs { pub fn cli() -> Command { let usage = if is_rustup() { - "cargo [+toolchain] [OPTIONS] [COMMAND]\n cargo [+toolchain] [OPTIONS] -Zscript [ARGS]..." + color_print::cstr!("cargo [+toolchain] [OPTIONS] [COMMAND]\n cargo [+toolchain] [OPTIONS] -Zscript <> [ARGS]...") } else { - "cargo [OPTIONS] [COMMAND]\n cargo [OPTIONS] -Zscript [ARGS]..." + color_print::cstr!("cargo [OPTIONS] [COMMAND]\n cargo [OPTIONS] -Zscript <> [ARGS]...") }; + + let styles = { + use clap::builder::styling::*; + Styles::styled() + .header(AnsiColor::Green.on_default() | Effects::BOLD) + .usage(AnsiColor::Green.on_default() | Effects::BOLD) + .literal(AnsiColor::Cyan.on_default() | Effects::BOLD) + .placeholder(AnsiColor::Cyan.on_default()) + .error(AnsiColor::Red.on_default() | Effects::BOLD) + .valid(AnsiColor::Cyan.on_default() | Effects::BOLD) + .invalid(AnsiColor::Yellow.on_default() | Effects::BOLD) + }; + Command::new("cargo") // Subcommands all count their args' display order independently (from 0), // which makes their args interspersed with global args. This puts global args last. @@ -524,42 +537,40 @@ pub fn cli() -> Command { // We also want these to come before auto-generated `--help` .next_display_order(800) .allow_external_subcommands(true) - // Doesn't mix well with our list of common cargo commands. See clap-rs/clap#3108 for - // opening clap up to allow us to style our help template - .disable_colored_help(true) + .styles(styles) // Provide a custom help subcommand for calling into man pages .disable_help_subcommand(true) .override_usage(usage) - .help_template( + .help_template(color_print::cstr!( "\ Rust's package manager -Usage: {usage} +Usage: {usage} -Options: +Options: {options} -Commands: - build, b Compile the current package - check, c Analyze the current package and report errors, but don't build object files - clean Remove the target directory - doc, d Build this package's and its dependencies' documentation - new Create a new cargo package - init Create a new cargo package in an existing directory - add Add dependencies to a manifest file - remove Remove dependencies from a manifest file - run, r Run a binary or example of the local package - test, t Run the tests - bench Run the benchmarks - update Update dependencies listed in Cargo.lock - search Search registry for crates - publish Package and upload this package to the registry - install Install a Rust binary. Default location is $HOME/.cargo/bin - uninstall Uninstall a Rust binary - ... See all commands with --list - -See 'cargo help ' for more information on a specific command.\n", - ) +Commands: + build, b Compile the current package + check, c Analyze the current package and report errors, but don't build object files + clean Remove the target directory + doc, d Build this package's and its dependencies' documentation + new Create a new cargo package + init Create a new cargo package in an existing directory + add Add dependencies to a manifest file + remove Remove dependencies from a manifest file + run, r Run a binary or example of the local package + test, t Run the tests + bench Run the benchmarks + update Update dependencies listed in Cargo.lock + search Search registry for crates + publish Package and upload this package to the registry + install Install a Rust binary. Default location is $HOME/.cargo/bin + uninstall Uninstall a Rust binary + ... See all commands with --list + +See 'cargo help <>' for more information on a specific command.\n", + )) .arg(flag("version", "Print version info and exit").short('V')) .arg(flag("list", "List installed commands")) .arg( diff --git a/src/bin/cargo/commands/add.rs b/src/bin/cargo/commands/add.rs index 56df762683e..344cd2af3f8 100644 --- a/src/bin/cargo/commands/add.rs +++ b/src/bin/cargo/commands/add.rs @@ -18,12 +18,12 @@ pub fn cli() -> Command { clap::Command::new("add") .about("Add dependencies to a Cargo.toml manifest file") .override_usage( - "\ - cargo add [OPTIONS] [@] ... - cargo add [OPTIONS] --path ... - cargo add [OPTIONS] --git ..." - ) - .after_help("Run `cargo help add` for more detailed information.\n") + color_print::cstr!("\ + cargo add [OPTIONS] <>[@<>] ... + cargo add [OPTIONS] --path <> ... + cargo add [OPTIONS] --git <> ..." + )) + .after_help(color_print::cstr!("Run `cargo help add` for more detailed information.\n")) .group(clap::ArgGroup::new("selected").multiple(true).required(true)) .args([ clap::Arg::new("crates") diff --git a/src/bin/cargo/commands/bench.rs b/src/bin/cargo/commands/bench.rs index 971dc945648..1a97d84a4f7 100644 --- a/src/bin/cargo/commands/bench.rs +++ b/src/bin/cargo/commands/bench.rs @@ -50,7 +50,9 @@ pub fn cli() -> Command { .arg_unit_graph() .arg_timings() .arg_manifest_path() - .after_help("Run `cargo help bench` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help bench` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/build.rs b/src/bin/cargo/commands/build.rs index 19076d32895..7197cdbad35 100644 --- a/src/bin/cargo/commands/build.rs +++ b/src/bin/cargo/commands/build.rs @@ -46,7 +46,9 @@ pub fn cli() -> Command { .arg_unit_graph() .arg_timings() .arg_manifest_path() - .after_help("Run `cargo help build` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help build` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/check.rs b/src/bin/cargo/commands/check.rs index 62df0c10670..a54e84cdcdd 100644 --- a/src/bin/cargo/commands/check.rs +++ b/src/bin/cargo/commands/check.rs @@ -37,7 +37,9 @@ pub fn cli() -> Command { .arg_unit_graph() .arg_timings() .arg_manifest_path() - .after_help("Run `cargo help check` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help check` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/clean.rs b/src/bin/cargo/commands/clean.rs index c47e1670203..8a5645e3310 100644 --- a/src/bin/cargo/commands/clean.rs +++ b/src/bin/cargo/commands/clean.rs @@ -14,7 +14,9 @@ pub fn cli() -> Command { .arg_target_triple("Target triple to clean output for") .arg_target_dir() .arg_manifest_path() - .after_help("Run `cargo help clean` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help clean` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/doc.rs b/src/bin/cargo/commands/doc.rs index e209eb7dbdb..43a6ee95082 100644 --- a/src/bin/cargo/commands/doc.rs +++ b/src/bin/cargo/commands/doc.rs @@ -40,7 +40,9 @@ pub fn cli() -> Command { .arg_unit_graph() .arg_timings() .arg_manifest_path() - .after_help("Run `cargo help doc` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help doc` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/fetch.rs b/src/bin/cargo/commands/fetch.rs index ba9e8d82b9e..794dbf9b0c0 100644 --- a/src/bin/cargo/commands/fetch.rs +++ b/src/bin/cargo/commands/fetch.rs @@ -9,7 +9,9 @@ pub fn cli() -> Command { .arg_quiet() .arg_target_triple("Fetch dependencies for the target triple") .arg_manifest_path() - .after_help("Run `cargo help fetch` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help fetch` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/fix.rs b/src/bin/cargo/commands/fix.rs index 96afbbdccd4..0ecf47450ae 100644 --- a/src/bin/cargo/commands/fix.rs +++ b/src/bin/cargo/commands/fix.rs @@ -54,7 +54,9 @@ pub fn cli() -> Command { .arg_target_dir() .arg_timings() .arg_manifest_path() - .after_help("Run `cargo help fix` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help fix` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/generate_lockfile.rs b/src/bin/cargo/commands/generate_lockfile.rs index 7d06aad596a..4f1382ee5d4 100644 --- a/src/bin/cargo/commands/generate_lockfile.rs +++ b/src/bin/cargo/commands/generate_lockfile.rs @@ -7,7 +7,9 @@ pub fn cli() -> Command { .about("Generate the lockfile for a package") .arg_quiet() .arg_manifest_path() - .after_help("Run `cargo help generate-lockfile` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help generate-lockfile` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/init.rs b/src/bin/cargo/commands/init.rs index fdb3dc208de..d699c2c4907 100644 --- a/src/bin/cargo/commands/init.rs +++ b/src/bin/cargo/commands/init.rs @@ -9,7 +9,9 @@ pub fn cli() -> Command { .arg_new_opts() .arg(opt("registry", "Registry to use").value_name("REGISTRY")) .arg_quiet() - .after_help("Run `cargo help init` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help init` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/install.rs b/src/bin/cargo/commands/install.rs index b4937fa6f6f..e7907f449f5 100644 --- a/src/bin/cargo/commands/install.rs +++ b/src/bin/cargo/commands/install.rs @@ -87,7 +87,9 @@ pub fn cli() -> Command { .arg_target_triple("Build for the target triple") .arg_target_dir() .arg_timings() - .after_help("Run `cargo help install` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help install` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/locate_project.rs b/src/bin/cargo/commands/locate_project.rs index 69f01530004..217bdcac95a 100644 --- a/src/bin/cargo/commands/locate_project.rs +++ b/src/bin/cargo/commands/locate_project.rs @@ -16,7 +16,9 @@ pub fn cli() -> Command { ) .arg_quiet() .arg_manifest_path() - .after_help("Run `cargo help locate-project` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help locate-project` for more detailed information.\n" + )) } #[derive(Serialize)] diff --git a/src/bin/cargo/commands/login.rs b/src/bin/cargo/commands/login.rs index e51adaa1cca..262e3d6b05f 100644 --- a/src/bin/cargo/commands/login.rs +++ b/src/bin/cargo/commands/login.rs @@ -14,7 +14,9 @@ pub fn cli() -> Command { .last(true), ) .arg_quiet() - .after_help("Run `cargo help login` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help login` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/logout.rs b/src/bin/cargo/commands/logout.rs index 4320240c631..a4fae5bd614 100644 --- a/src/bin/cargo/commands/logout.rs +++ b/src/bin/cargo/commands/logout.rs @@ -6,7 +6,9 @@ pub fn cli() -> Command { .about("Remove an API token from the registry locally") .arg(opt("registry", "Registry to use").value_name("REGISTRY")) .arg_quiet() - .after_help("Run `cargo help logout` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help logout` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/metadata.rs b/src/bin/cargo/commands/metadata.rs index 54257dee3db..09064de7d3b 100644 --- a/src/bin/cargo/commands/metadata.rs +++ b/src/bin/cargo/commands/metadata.rs @@ -26,7 +26,9 @@ pub fn cli() -> Command { .arg_quiet() .arg_features() .arg_manifest_path() - .after_help("Run `cargo help metadata` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help metadata` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/new.rs b/src/bin/cargo/commands/new.rs index 6124444c0e8..a5dff272108 100644 --- a/src/bin/cargo/commands/new.rs +++ b/src/bin/cargo/commands/new.rs @@ -9,7 +9,9 @@ pub fn cli() -> Command { .arg_new_opts() .arg(opt("registry", "Registry to use").value_name("REGISTRY")) .arg_quiet() - .after_help("Run `cargo help new` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help new` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/owner.rs b/src/bin/cargo/commands/owner.rs index 223327c3163..c9deaef5137 100644 --- a/src/bin/cargo/commands/owner.rs +++ b/src/bin/cargo/commands/owner.rs @@ -28,7 +28,9 @@ pub fn cli() -> Command { .arg(opt("token", "API token to use when authenticating").value_name("TOKEN")) .arg(opt("registry", "Registry to use").value_name("REGISTRY")) .arg_quiet() - .after_help("Run `cargo help owner` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help owner` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/package.rs b/src/bin/cargo/commands/package.rs index 7fa993f1dd3..0020e365e86 100644 --- a/src/bin/cargo/commands/package.rs +++ b/src/bin/cargo/commands/package.rs @@ -35,7 +35,9 @@ pub fn cli() -> Command { .arg_target_dir() .arg_parallel() .arg_manifest_path() - .after_help("Run `cargo help package` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help package` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/pkgid.rs b/src/bin/cargo/commands/pkgid.rs index ba4540cf1ac..9d7a6c71258 100644 --- a/src/bin/cargo/commands/pkgid.rs +++ b/src/bin/cargo/commands/pkgid.rs @@ -10,7 +10,9 @@ pub fn cli() -> Command { .arg_quiet() .arg_package("Argument to get the package ID specifier for") .arg_manifest_path() - .after_help("Run `cargo help pkgid` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help pkgid` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/publish.rs b/src/bin/cargo/commands/publish.rs index 8a9175f6cd8..34108d45d25 100644 --- a/src/bin/cargo/commands/publish.rs +++ b/src/bin/cargo/commands/publish.rs @@ -24,7 +24,9 @@ pub fn cli() -> Command { .arg_target_triple("Build for the target triple") .arg_target_dir() .arg_manifest_path() - .after_help("Run `cargo help publish` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help publish` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/read_manifest.rs b/src/bin/cargo/commands/read_manifest.rs index a1f42bfb021..6625d60f51d 100644 --- a/src/bin/cargo/commands/read_manifest.rs +++ b/src/bin/cargo/commands/read_manifest.rs @@ -2,13 +2,13 @@ use crate::command_prelude::*; pub fn cli() -> Command { subcommand("read-manifest") - .about( + .about(color_print::cstr!( "\ Print a JSON representation of a Cargo.toml manifest. -Deprecated, use `cargo metadata --no-deps` instead.\ -", - ) +Deprecated, use `cargo metadata --no-deps` instead.\ +" + )) .arg_quiet() .arg_manifest_path() } diff --git a/src/bin/cargo/commands/remove.rs b/src/bin/cargo/commands/remove.rs index e8f6ab98e80..aebb2f11cab 100644 --- a/src/bin/cargo/commands/remove.rs +++ b/src/bin/cargo/commands/remove.rs @@ -50,6 +50,9 @@ pub fn cli() -> clap::Command { ]) .arg_package("Package to remove from") .arg_manifest_path() + .after_help(color_print::cstr!( + "Run `cargo help remove` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/report.rs b/src/bin/cargo/commands/report.rs index 275a8f7c0db..adc4dcb9220 100644 --- a/src/bin/cargo/commands/report.rs +++ b/src/bin/cargo/commands/report.rs @@ -5,7 +5,9 @@ use cargo::drop_println; pub fn cli() -> Command { subcommand("report") .about("Generate and display various kinds of reports") - .after_help("Run `cargo help report` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help report` for more detailed information.\n" + )) .subcommand_required(true) .arg_required_else_help(true) .subcommand( diff --git a/src/bin/cargo/commands/run.rs b/src/bin/cargo/commands/run.rs index ce2099b0e50..029c9ee56f1 100644 --- a/src/bin/cargo/commands/run.rs +++ b/src/bin/cargo/commands/run.rs @@ -38,7 +38,9 @@ pub fn cli() -> Command { .arg_manifest_path() .arg_unit_graph() .arg_timings() - .after_help("Run `cargo help run` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help run` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/rustc.rs b/src/bin/cargo/commands/rustc.rs index d318b619463..60f0b9d603a 100644 --- a/src/bin/cargo/commands/rustc.rs +++ b/src/bin/cargo/commands/rustc.rs @@ -52,7 +52,9 @@ pub fn cli() -> Command { .arg_unit_graph() .arg_timings() .arg_manifest_path() - .after_help("Run `cargo help rustc` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help rustc` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/rustdoc.rs b/src/bin/cargo/commands/rustdoc.rs index 25ca7dacf36..8cb2f10def9 100644 --- a/src/bin/cargo/commands/rustdoc.rs +++ b/src/bin/cargo/commands/rustdoc.rs @@ -40,7 +40,9 @@ pub fn cli() -> Command { .arg_unit_graph() .arg_timings() .arg_manifest_path() - .after_help("Run `cargo help rustdoc` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help rustdoc` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/search.rs b/src/bin/cargo/commands/search.rs index 656172e77d3..90aadcb274b 100644 --- a/src/bin/cargo/commands/search.rs +++ b/src/bin/cargo/commands/search.rs @@ -18,7 +18,9 @@ pub fn cli() -> Command { .arg_index() .arg(opt("registry", "Registry to use").value_name("REGISTRY")) .arg_quiet() - .after_help("Run `cargo help search` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help search` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/test.rs b/src/bin/cargo/commands/test.rs index f8ec0e2f946..3c7af506d80 100644 --- a/src/bin/cargo/commands/test.rs +++ b/src/bin/cargo/commands/test.rs @@ -57,10 +57,10 @@ pub fn cli() -> Command { .arg_unit_graph() .arg_timings() .arg_manifest_path() - .after_help( - "Run `cargo help test` for more detailed information.\n\ - Run `cargo test -- --help` for test binary options.\n", - ) + .after_help(color_print::cstr!( + "Run `cargo help test` for more detailed information.\n\ + Run `cargo test -- --help` for test binary options.\n", + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/tree.rs b/src/bin/cargo/commands/tree.rs index 4657eafff96..1fe6a3a14c5 100644 --- a/src/bin/cargo/commands/tree.rs +++ b/src/bin/cargo/commands/tree.rs @@ -96,7 +96,9 @@ pub fn cli() -> Command { Pass `all` to include all targets.", ) .arg_manifest_path() - .after_help("Run `cargo help tree` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help tree` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/uninstall.rs b/src/bin/cargo/commands/uninstall.rs index 398979bf496..9585d290bd7 100644 --- a/src/bin/cargo/commands/uninstall.rs +++ b/src/bin/cargo/commands/uninstall.rs @@ -13,7 +13,9 @@ pub fn cli() -> Command { multi_opt("bin", "NAME", "Only uninstall the binary NAME") .help_heading(heading::TARGET_SELECTION), ) - .after_help("Run `cargo help uninstall` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help uninstall` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/update.rs b/src/bin/cargo/commands/update.rs index 1749de763a7..e06e8e51ece 100644 --- a/src/bin/cargo/commands/update.rs +++ b/src/bin/cargo/commands/update.rs @@ -42,7 +42,9 @@ pub fn cli() -> Command { .help_heading(heading::PACKAGE_SELECTION), ) .arg_manifest_path() - .after_help("Run `cargo help update` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help update` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/vendor.rs b/src/bin/cargo/commands/vendor.rs index f0c1ecad061..05e0d7defd5 100644 --- a/src/bin/cargo/commands/vendor.rs +++ b/src/bin/cargo/commands/vendor.rs @@ -38,7 +38,9 @@ pub fn cli() -> Command { .arg(unsupported("disallow-duplicates")) .arg_quiet() .arg_manifest_path() - .after_help("Run `cargo help vendor` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help vendor` for more detailed information.\n" + )) } fn unsupported(name: &'static str) -> Arg { diff --git a/src/bin/cargo/commands/verify_project.rs b/src/bin/cargo/commands/verify_project.rs index 4d5492606a0..35bb747a4b0 100644 --- a/src/bin/cargo/commands/verify_project.rs +++ b/src/bin/cargo/commands/verify_project.rs @@ -8,7 +8,9 @@ pub fn cli() -> Command { .about("Check correctness of crate manifest") .arg_quiet() .arg_manifest_path() - .after_help("Run `cargo help verify-project` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help verify-project` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/version.rs b/src/bin/cargo/commands/version.rs index ac1681f5b40..65e1c6c479c 100644 --- a/src/bin/cargo/commands/version.rs +++ b/src/bin/cargo/commands/version.rs @@ -5,7 +5,9 @@ pub fn cli() -> Command { subcommand("version") .about("Show version information") .arg_quiet() - .after_help("Run `cargo help version` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help version` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/src/bin/cargo/commands/yank.rs b/src/bin/cargo/commands/yank.rs index e6700bd2fb4..665683915dd 100644 --- a/src/bin/cargo/commands/yank.rs +++ b/src/bin/cargo/commands/yank.rs @@ -20,7 +20,9 @@ pub fn cli() -> Command { .arg(opt("registry", "Registry to use").value_name("REGISTRY")) .arg(opt("token", "API token to use when authenticating").value_name("TOKEN")) .arg_quiet() - .after_help("Run `cargo help yank` for more detailed information.\n") + .after_help(color_print::cstr!( + "Run `cargo help yank` for more detailed information.\n" + )) } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { diff --git a/tests/testsuite/cargo_remove/help/stdout.log b/tests/testsuite/cargo_remove/help/stdout.log index 81a2d78b690..b8d16f0c254 100644 --- a/tests/testsuite/cargo_remove/help/stdout.log +++ b/tests/testsuite/cargo_remove/help/stdout.log @@ -27,3 +27,5 @@ Manifest Options: --frozen Require Cargo.lock and cache are up to date --locked Require Cargo.lock is up to date --offline Run without accessing the network + +Run `cargo help remove` for more detailed information.