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