diff --git a/CHANGELOG.md b/CHANGELOG.md index 9421322e96e..42b5410335e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ MSRV is now 1.60.0 - `Arg::num_args` now accepts ranges, allowing setting both the minimum and maximum number of values per occurrence - Added `TypedValueParser::map` to make it easier to reuse existing value parsers +- *(error)* `Error::apply` for changing the formatter for dropping binary size - *(help)* Show `PossibleValue::help` in long help (`--help`) (#3312) ### Fixes diff --git a/src/builder/command.rs b/src/builder/command.rs index 8f50bd74c56..4d81e93ff32 100644 --- a/src/builder/command.rs +++ b/src/builder/command.rs @@ -4390,12 +4390,11 @@ impl Command { self.disp_ord.unwrap_or(999) } - pub(crate) fn write_help_err(&self, mut use_long: bool, stream: Stream) -> Colorizer { + pub(crate) fn write_help_err(&self, mut use_long: bool) -> StyledStr { debug!( - "Command::write_help_err: {}, use_long={:?}, stream={:?}", + "Command::write_help_err: {}, use_long={:?}", self.get_display_name().unwrap_or_else(|| self.get_name()), use_long && self.use_long_help(), - stream ); use_long = use_long && self.use_long_help(); @@ -4404,14 +4403,14 @@ impl Command { let mut styled = StyledStr::new(); Help::new(&mut styled, self, &usage, use_long).write_help(); - Colorizer::new(stream, self.color_help()).with_content(styled) + styled } - pub(crate) fn write_version_err(&self, use_long: bool) -> Colorizer { + pub(crate) fn write_version_err(&self, use_long: bool) -> StyledStr { let msg = self._render_version(use_long); let mut styled = StyledStr::new(); styled.none(msg); - Colorizer::new(Stream::Stdout, self.color_help()).with_content(styled) + styled } pub(crate) fn use_long_help(&self) -> bool { diff --git a/src/builder/mod.rs b/src/builder/mod.rs index b717d598f98..a450cbee408 100644 --- a/src/builder/mod.rs +++ b/src/builder/mod.rs @@ -33,6 +33,7 @@ pub use possible_value::PossibleValue; pub use range::ValueRange; pub use resettable::IntoResettable; pub use resettable::Resettable; +pub use styled_str::StyledStr; pub use value_hint::ValueHint; pub use value_parser::_AutoValueParser; pub use value_parser::via_prelude; @@ -55,7 +56,6 @@ pub use value_parser::_AnonymousValueParser; #[allow(unused_imports)] pub(crate) use self::str::Inner as StrInner; -pub(crate) use self::styled_str::StyledStr; pub(crate) use action::CountType; pub(crate) use arg::render_arg_val; pub(crate) use arg_settings::{ArgFlags, ArgSettings}; diff --git a/src/builder/styled_str.rs b/src/builder/styled_str.rs index ad2a697bb90..afe2545a3ff 100644 --- a/src/builder/styled_str.rs +++ b/src/builder/styled_str.rs @@ -1,10 +1,12 @@ +/// Terminal-styling container #[derive(Clone, Default, Debug, PartialEq, Eq)] -pub(crate) struct StyledStr { +pub struct StyledStr { pieces: Vec<(Option