From: Ian Jackson Date: Sun, 9 Aug 2020 17:40:41 +0000 (+0100) Subject: generalise X-Git-Tag: otter-0.2.0~1147 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=d74487e95ab61d371bb109c0d7d83aa5c9fabbe7;p=otter.git generalise --- diff --git a/src/bin/otter.rs b/src/bin/otter.rs index 863ac39b..507bba5f 100644 --- a/src/bin/otter.rs +++ b/src/bin/otter.rs @@ -108,7 +108,7 @@ inventory::submit!{Subcommand( struct ArgumentParseError(String); display_as_debug!(ArgumentParseError); -fn parse_args(apmaker: &F, completer: &C) -> T +fn parse_args(args: Vec, apmaker: &F, completer: &C) -> T where T: Default, F: Fn(&mut T) -> ArgumentParser, C: Fn(&mut T) -> Result<(), ArgumentParseError>, @@ -116,7 +116,8 @@ where T: Default, let mut parsed = Default::default(); let ap = apmaker(&mut parsed); - if let Err(mut rc) = ap.parse_args() { + let r = ap.parse(args, &mut io::stdout(), &mut io::stderr()); + if let Err(mut rc) = r { if rc!=0 { rc = EXIT_USAGE } exit(rc); } @@ -137,7 +138,9 @@ fn main() { subcommand: String, subargs: Vec, }; - let ma = parse_args::(&|ma|{ + let ma = parse_args::( + env::args().collect(), + &|ma|{ let mut ap = ArgumentParser::new(); ap.stop_on_first_argument(true); ap.silence_double_dash(true);