119625d8cSopenharmony_ci#![cfg_attr(not(feature = "help"), allow(unused_variables))]
219625d8cSopenharmony_ci
319625d8cSopenharmony_ci// Internal
419625d8cSopenharmony_ciuse crate::builder::Command;
519625d8cSopenharmony_ciuse crate::builder::StyledStr;
619625d8cSopenharmony_ciuse crate::output::Usage;
719625d8cSopenharmony_ci
819625d8cSopenharmony_ci/// Writes the parser help to the wrapped stream.
919625d8cSopenharmony_cipub(crate) fn write_help(writer: &mut StyledStr, cmd: &Command, usage: &Usage<'_>, use_long: bool) {
1019625d8cSopenharmony_ci    debug!("write_help");
1119625d8cSopenharmony_ci
1219625d8cSopenharmony_ci    if let Some(h) = cmd.get_override_help() {
1319625d8cSopenharmony_ci        writer.extend(h.iter());
1419625d8cSopenharmony_ci    } else {
1519625d8cSopenharmony_ci        #[cfg(feature = "help")]
1619625d8cSopenharmony_ci        {
1719625d8cSopenharmony_ci            use super::AutoHelp;
1819625d8cSopenharmony_ci            use super::HelpTemplate;
1919625d8cSopenharmony_ci            if let Some(tmpl) = cmd.get_help_template() {
2019625d8cSopenharmony_ci                for (style, content) in tmpl.iter() {
2119625d8cSopenharmony_ci                    if style.is_none() {
2219625d8cSopenharmony_ci                        HelpTemplate::new(writer, cmd, usage, use_long)
2319625d8cSopenharmony_ci                            .write_templated_help(content);
2419625d8cSopenharmony_ci                    } else {
2519625d8cSopenharmony_ci                        writer.stylize(style, content);
2619625d8cSopenharmony_ci                    }
2719625d8cSopenharmony_ci                }
2819625d8cSopenharmony_ci            } else {
2919625d8cSopenharmony_ci                AutoHelp::new(writer, cmd, usage, use_long).write_help();
3019625d8cSopenharmony_ci            }
3119625d8cSopenharmony_ci        }
3219625d8cSopenharmony_ci
3319625d8cSopenharmony_ci        #[cfg(not(feature = "help"))]
3419625d8cSopenharmony_ci        {
3519625d8cSopenharmony_ci            debug!("write_help: no help, `Command::override_help` and `help` is missing");
3619625d8cSopenharmony_ci        }
3719625d8cSopenharmony_ci    }
3819625d8cSopenharmony_ci
3919625d8cSopenharmony_ci    // Remove any extra lines caused by book keeping
4019625d8cSopenharmony_ci    writer.trim();
4119625d8cSopenharmony_ci    // Ensure there is still a trailing newline
4219625d8cSopenharmony_ci    writer.none("\n");
4319625d8cSopenharmony_ci}
44