From 36afe99bfae3c845bad8f2177e101a68731071b2 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 17 Jul 2023 10:40:42 -0500 Subject: [PATCH] fix(help): Skip `[OPTIONS]` if help/version action Our code for detecting when to skip this in the usage was never updated for actions. --- clap_builder/src/output/usage.rs | 15 +++++++++++++++ tests/builder/help.rs | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/clap_builder/src/output/usage.rs b/clap_builder/src/output/usage.rs index 3f387a0d71e..884a64df960 100644 --- a/clap_builder/src/output/usage.rs +++ b/clap_builder/src/output/usage.rs @@ -4,6 +4,7 @@ #![cfg_attr(not(feature = "usage"), allow(dead_code))] // Internal +use crate::builder::ArgAction; use crate::builder::StyledStr; use crate::builder::Styles; use crate::builder::{ArgPredicate, Command}; @@ -210,6 +211,20 @@ impl<'cmd> Usage<'cmd> { debug!("Usage::needs_options_tag:iter Option is built-in"); continue; } + match f.get_action() { + ArgAction::Set + | ArgAction::Append + | ArgAction::SetTrue + | ArgAction::SetFalse + | ArgAction::Count => {} + ArgAction::Help + | ArgAction::HelpShort + | ArgAction::HelpLong + | ArgAction::Version => { + debug!("Usage::needs_options_tag:iter Option is built-in"); + continue; + } + } if f.is_hide_set() { debug!("Usage::needs_options_tag:iter Option is hidden"); diff --git a/tests/builder/help.rs b/tests/builder/help.rs index b4e6e358525..fda7a9aeb13 100644 --- a/tests/builder/help.rs +++ b/tests/builder/help.rs @@ -1068,7 +1068,7 @@ fn explicit_short_long_help() { static SHORT_ABOUT: &str = "\ bar -Usage: myapp [OPTIONS] [arg1] +Usage: myapp [arg1] Arguments: [arg1] some option @@ -1084,7 +1084,7 @@ something really really long, with multiple lines of text that should be displayed -Usage: myapp [OPTIONS] [arg1] +Usage: myapp [arg1] Arguments: [arg1] @@ -1351,7 +1351,7 @@ fn override_help_short() { } static OVERRIDE_HELP_LONG: &str = "\ -Usage: test [OPTIONS] +Usage: test Options: -h, --hell Print help