chiark / gitweb /
fix errors
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 9 Aug 2020 22:00:35 +0000 (23:00 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 9 Aug 2020 22:00:35 +0000 (23:00 +0100)
src/bin/otter.rs

index 29f90391a124dea3c1bcc2bfcd412e8c6aaa7aab..8e5240149af07edbe2ea71731635cc092cea2b49 100644 (file)
@@ -121,10 +121,12 @@ where T: Default,
 {
   let mut parsed = Default::default();
   let ap = apmaker(&mut parsed);
+  let us = args.get(0).expect("argv[0] must be provided!").clone();
 
   let mut stdout = io::stdout();
+  let mut stderr = io::stderr();
 
-  let r = ap.parse(args, &mut stdout, &mut io::stderr());
+  let r = ap.parse(args, &mut stdout, &mut stderr);
   if let Err(rc) = r {
     exit(match rc {
       0 => {
@@ -136,12 +138,14 @@ where T: Default,
         }
         0
       },
-      _ => EXIT_USAGE,
+      2 => EXIT_USAGE,
+      _ => panic!("unexpected error rc {} from ArgumentParser::parse", rc),
     });
   }
   mem::drop(ap);
-  completer(&mut parsed).unwrap_or_else(|e| {
-    eprintln!("bad usage: {}", &e);
+  completer(&mut parsed).unwrap_or_else(|e:ArgumentParseError| {
+    let ap = apmaker(&mut parsed);
+    ap.error(&us, &e.0, &mut stderr);
     exit(EXIT_USAGE);
   });
   parsed