diff --git a/rust/utils/src/cli.rs b/rust/utils/src/cli.rs index 066e939f..84ed84f1 100644 --- a/rust/utils/src/cli.rs +++ b/rust/utils/src/cli.rs @@ -276,6 +276,29 @@ impl DeprecatedVerbosityOptions { ) } } +pub fn combined_path_opt<'a, N: AsRef, P: AsRef>( + named: &'a Option, + positional: &'a Option

, + default: &'a str, +) -> &'a str { + match (named, positional) { + (None, Some(i)) => i.as_ref(), + (Some(i), None) => i.as_ref(), + (Some(_), Some(_)) => unreachable!(), + (None, None) => default, + } +} +pub fn combined_path_req<'a, N: AsRef, P: AsRef>( + named: &'a Option, + positional: &'a Option

, +) -> &'a str { + match (named, positional) { + (None, Some(i)) => i.as_ref(), + (Some(i), None) => i.as_ref(), + (Some(_), Some(_)) => unreachable!(), + (None, None) => unreachable!(), + } +} #[cfg(test)] mod test { diff --git a/rust/utils/src/lib.rs b/rust/utils/src/lib.rs index 1efec7c8..8af368ee 100644 --- a/rust/utils/src/lib.rs +++ b/rust/utils/src/lib.rs @@ -16,8 +16,9 @@ pub use ::log::LevelFilter; pub use crate::{ cli::{ - get_reader_from_cli_file_arg, get_writer_from_cli_file_arg, print_cli_error, print_error, - CertificateOptions, DeprecatedVerbosityOptions, VerbosityOptions, STDIN, STDOUT, + combined_path_opt, combined_path_req, get_reader_from_cli_file_arg, + get_writer_from_cli_file_arg, print_cli_error, print_error, CertificateOptions, + DeprecatedVerbosityOptions, VerbosityOptions, STDIN, STDOUT, }, exit_code::{docstring, ExitCodeDoc, ExitCodeTrait, ExitCodeVariantDoc}, file::{AtomicFile, AtomicFileOperation},