aboutsummaryrefslogtreecommitdiff
path: root/src/cli/spec.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli/spec.rs')
-rw-r--r--src/cli/spec.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/cli/spec.rs b/src/cli/spec.rs
index b2b6cb03..134bf0bf 100644
--- a/src/cli/spec.rs
+++ b/src/cli/spec.rs
@@ -64,10 +64,14 @@ fn configure_help(command: Command, depth: usize) -> Command {
pub(super) fn print_requested_help(args: &[String]) -> std::io::Result<bool> {
let mut stdout = std::io::stdout().lock();
- write_requested_help(args, &mut stdout)
+ write_requested_help(args, &mut stdout, crate::platform::begin_cli_output)
}
-fn write_requested_help(args: &[String], output: &mut impl Write) -> std::io::Result<bool> {
+fn write_requested_help(
+ args: &[String],
+ output: &mut impl Write,
+ before_write: impl FnOnce(),
+) -> std::io::Result<bool> {
let Some(help_index) = args
.iter()
.position(|arg| matches!(arg.as_str(), "--help" | "-h"))
@@ -99,6 +103,7 @@ fn write_requested_help(args: &[String], output: &mut impl Write) -> std::io::Re
}
selected.set_bin_name(path.join(" "));
+ before_write();
selected.write_long_help(&mut *output)?;
writeln!(output)?;
Ok(true)
@@ -1083,7 +1088,7 @@ mod tests {
args.push(flag.to_string());
let mut output = Vec::new();
assert!(
- super::write_requested_help(&args, &mut output).unwrap(),
+ super::write_requested_help(&args, &mut output, || {}).unwrap(),
"help was not handled for herdr {} {flag}",
path.join(" ")
);
@@ -1197,6 +1202,7 @@ mod tests {
"--help".to_string(),
],
&mut help,
+ || {},
)
.unwrap();
assert!(String::from_utf8(help)
@@ -1304,7 +1310,7 @@ mod tests {
args.push("--help".to_string());
let mut output = Vec::new();
assert!(
- super::write_requested_help(&args, &mut output).unwrap(),
+ super::write_requested_help(&args, &mut output, || {}).unwrap(),
"help was not handled for herdr {}",
path.join(" ")
);