Restrict scope of automatic usage hint in standard error writer, so the default behaviour is less spammy

This commit is contained in:
2025-11-06 02:29:06 +11:00
parent e26f4c933b
commit 304e12bd8e

View File

@@ -209,18 +209,21 @@ impl<ID> core::fmt::Display for StandardErrorUsageWriter<'_, ID> {
// Write error // Write error
writeln!(f, "{name}: {error}", name=self.0.program_name, error = self.0.error)?; writeln!(f, "{name}: {error}", name=self.0.program_name, error = self.0.error)?;
// Write usage // Provide usage hint for missing required arguments
writeln!(f, "{}", StandardShortUsageWriter::new(HelpWriterContext { if matches!(self.0.error, ParseError::RequiredPositional(_) | ParseError::RequiredParameter(_)) {
options: self.0.options, // Write short usage
program_name: self.0.program_name writeln!(f, "{}", StandardShortUsageWriter::new(HelpWriterContext {
}))?; options: self.0.options,
program_name: self.0.program_name
}))?;
// Write full help instruction if a // Write full help instruction if available
if let Some(help_option) = self.0.options.help_option() { if let Some(help_option) = self.0.options.help_option() {
writeln!(f, "Run '{name} {help}' to view all available options.", writeln!(f, "Run '{name} {help}' to view all available options.",
name = self.0.program_name, name = self.0.program_name,
// Prefer long name, but otherwise any name is fine // Prefer long name, but otherwise any name is fine
help = help_option.first_long_name().unwrap_or(help_option.first_name()))?; help = help_option.first_long_name().unwrap_or(help_option.first_name()))?;
}
} }
Ok(()) Ok(())
} }