From: Ian Jackson Date: Sun, 6 Jun 2021 21:28:32 +0000 (+0100) Subject: otter: Rework run_ap_completer into argparse_more X-Git-Tag: otter-0.7.0~67 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=1e9b11b08eefa9880c7e7143fa39fb945f277d4f;p=otter.git otter: Rework run_ap_completer into argparse_more Signed-off-by: Ian Jackson --- diff --git a/cli/clisupport.rs b/cli/clisupport.rs index 54ec5a3d..15b6da28 100644 --- a/cli/clisupport.rs +++ b/cli/clisupport.rs @@ -155,11 +155,11 @@ pub fn run_argparse(parsed: &mut T, apmaker: ApMaker, us } -pub fn run_ap_completer(parsed: T, us: String, apmaker: ApMaker, - completer: ApCompleter) - -> U where T: Default +pub fn argparse_more(us: String, apmaker: ApMaker, f: F) -> U + where T: Default, + F: FnOnce() -> Result { - completer(parsed).unwrap_or_else(|e| e.report(&us,apmaker)) + f().unwrap_or_else(|e| e.report(&us,apmaker)) } pub fn parse_args( @@ -170,7 +170,7 @@ pub fn parse_args( ) -> U { let mut parsed = default(); let us = run_argparse(&mut parsed, apmaker, args, extra_help); - let completed = run_ap_completer(parsed, us, apmaker, completer); + let completed = argparse_more(us, apmaker, || completer(parsed)); completed } diff --git a/cli/otter.rs b/cli/otter.rs index a0c7cf7e..8808ff28 100644 --- a/cli/otter.rs +++ b/cli/otter.rs @@ -323,7 +323,7 @@ fn main() { let us = run_argparse(&mut parsed, apmaker, args.clone(), Some(extra_help)); - let completed = run_ap_completer(parsed, us, apmaker, &ap_completer); + let completed = argparse_more(us, apmaker, || ap_completer(parsed)); let (subcommand, subargs, mo) = completed; let stdout = CookedStdout::new();