mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 23:02:31 +00:00
feat(Help): allows one to fully override the auto-generated help message
Allows overriding the entire help message so that nothing is auto-generated Closes #141
This commit is contained in:
parent
bf5fa2b71a
commit
26d5ae3e33
1 changed files with 45 additions and 0 deletions
45
src/app.rs
45
src/app.rs
|
@ -121,6 +121,7 @@ pub struct App<'a, 'v, 'ab, 'u, 'h, 'ar> {
|
||||||
global_args: Vec<Arg<'ar, 'ar, 'ar, 'ar, 'ar, 'ar>>,
|
global_args: Vec<Arg<'ar, 'ar, 'ar, 'ar, 'ar, 'ar>>,
|
||||||
no_sc_error: bool,
|
no_sc_error: bool,
|
||||||
help_on_no_args: bool,
|
help_on_no_args: bool,
|
||||||
|
help_str: Option<&'u str>,
|
||||||
help_on_no_sc: bool
|
help_on_no_sc: bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,6 +167,7 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
|
||||||
subcmds_neg_reqs: false,
|
subcmds_neg_reqs: false,
|
||||||
global_args: vec![],
|
global_args: vec![],
|
||||||
no_sc_error: false,
|
no_sc_error: false,
|
||||||
|
help_str: None,
|
||||||
help_on_no_args: false,
|
help_on_no_args: false,
|
||||||
help_on_no_sc: false
|
help_on_no_sc: false
|
||||||
}
|
}
|
||||||
|
@ -337,6 +339,45 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sets a custom help message and overrides the auto-generated one. This should only be used
|
||||||
|
/// when the auto-gererated message does not suffice.
|
||||||
|
///
|
||||||
|
/// This will be displayed to the user when they use the defailt `--help` or `-h`
|
||||||
|
///
|
||||||
|
/// **NOTE:** This replaces the **entire** help message, so nothing will be auto-gererated.
|
||||||
|
///
|
||||||
|
/// **NOTE:** This **only** replaces the help message for the current command, meaning if you
|
||||||
|
/// are using subcommands, those help messages will still be auto-gererated unless you
|
||||||
|
/// specify a `.help()` for them as well.
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// # Example
|
||||||
|
///
|
||||||
|
/// ```no_run
|
||||||
|
/// # use clap::{App, Arg};
|
||||||
|
/// App::new("myapp")
|
||||||
|
/// .help("myapp v1.0\n\
|
||||||
|
/// Does awesome things\n\
|
||||||
|
/// (C) me@mail.com\n\n\
|
||||||
|
///
|
||||||
|
/// USAGE: myapp <opts> <comamnd>\n\n\
|
||||||
|
///
|
||||||
|
/// Options:\n\
|
||||||
|
/// -h, --helpe Dispay this message\n\
|
||||||
|
/// -V, --version Display version info\n\
|
||||||
|
/// -s <stuff> Do something with stuff\n\
|
||||||
|
/// -v Be verbose\n\n\
|
||||||
|
///
|
||||||
|
/// Commmands:\n\
|
||||||
|
/// help Prints this message\n\
|
||||||
|
/// work Do some work")
|
||||||
|
/// # ;
|
||||||
|
/// ```
|
||||||
|
pub fn help(mut self, h: &'u str) -> App<'a, 'v, 'ab, 'u, 'h, 'ar> {
|
||||||
|
self.help_str = Some(h);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the short version of the `help` argument without the preceding `-`.
|
/// Sets the short version of the `help` argument without the preceding `-`.
|
||||||
///
|
///
|
||||||
/// By default `clap` automatically assigns `h`, but this can be overridden
|
/// By default `clap` automatically assigns `h`, but this can be overridden
|
||||||
|
@ -1161,6 +1202,10 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
|
||||||
|
|
||||||
// Prints the full help message to the user
|
// Prints the full help message to the user
|
||||||
fn print_help(&self) {
|
fn print_help(&self) {
|
||||||
|
if let Some(h) = self.help_str {
|
||||||
|
println!("{}", h);
|
||||||
|
return
|
||||||
|
}
|
||||||
self.print_version(false);
|
self.print_version(false);
|
||||||
let flags = !self.flags.is_empty();
|
let flags = !self.flags.is_empty();
|
||||||
let pos = !self.positionals_idx.is_empty();
|
let pos = !self.positionals_idx.is_empty();
|
||||||
|
|
Loading…
Reference in a new issue