summaryrefslogtreecommitdiffstats
path: root/third_party/rust/clap_builder/src/output/help.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/rust/clap_builder/src/output/help.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/third_party/rust/clap_builder/src/output/help.rs b/third_party/rust/clap_builder/src/output/help.rs
new file mode 100644
index 0000000000..a5073a9e4b
--- /dev/null
+++ b/third_party/rust/clap_builder/src/output/help.rs
@@ -0,0 +1,39 @@
+#![cfg_attr(not(feature = "help"), allow(unused_variables))]
+
+// Internal
+use crate::builder::Command;
+use crate::builder::StyledStr;
+use crate::output::Usage;
+
+/// Writes the parser help to the wrapped stream.
+pub(crate) fn write_help(writer: &mut StyledStr, cmd: &Command, usage: &Usage<'_>, use_long: bool) {
+ debug!("write_help");
+
+ if let Some(h) = cmd.get_override_help() {
+ writer.push_styled(h);
+ } else {
+ #[cfg(feature = "help")]
+ {
+ use super::AutoHelp;
+ use super::HelpTemplate;
+ if let Some(tmpl) = cmd.get_help_template() {
+ HelpTemplate::new(writer, cmd, usage, use_long)
+ .write_templated_help(tmpl.as_styled_str());
+ } else {
+ AutoHelp::new(writer, cmd, usage, use_long).write_help();
+ }
+ }
+
+ #[cfg(not(feature = "help"))]
+ {
+ debug!("write_help: no help, `Command::override_help` and `help` is missing");
+ }
+ }
+
+ // Remove any lines from unused sections
+ writer.trim_start_lines();
+ // Remove any whitespace caused by book keeping
+ writer.trim_end();
+ // Ensure there is still a trailing newline
+ writer.push_str("\n");
+}