• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #![cfg_attr(not(feature = "help"), allow(unused_variables))]
2 
3 // Internal
4 use crate::builder::Command;
5 use crate::builder::StyledStr;
6 use crate::output::Usage;
7 
8 /// Writes the parser help to the wrapped stream.
write_help(writer: &mut StyledStr, cmd: &Command, usage: &Usage<'_>, use_long: bool)9 pub(crate) fn write_help(writer: &mut StyledStr, cmd: &Command, usage: &Usage<'_>, use_long: bool) {
10     debug!("write_help");
11 
12     if let Some(h) = cmd.get_override_help() {
13         writer.extend(h.iter());
14     } else {
15         #[cfg(feature = "help")]
16         {
17             use super::AutoHelp;
18             use super::HelpTemplate;
19             if let Some(tmpl) = cmd.get_help_template() {
20                 for (style, content) in tmpl.iter() {
21                     if style.is_none() {
22                         HelpTemplate::new(writer, cmd, usage, use_long)
23                             .write_templated_help(content);
24                     } else {
25                         writer.stylize(style, content);
26                     }
27                 }
28             } else {
29                 AutoHelp::new(writer, cmd, usage, use_long).write_help();
30             }
31         }
32 
33         #[cfg(not(feature = "help"))]
34         {
35             debug!("write_help: no help, `Command::override_help` and `help` is missing");
36         }
37     }
38 
39     // Remove any extra lines caused by book keeping
40     writer.trim();
41     // Ensure there is still a trailing newline
42     writer.none("\n");
43 }
44