chiark / gitweb /
wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 7 Aug 2020 23:53:02 +0000 (00:53 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 7 Aug 2020 23:53:02 +0000 (00:53 +0100)
src/bin/otter.rs

index a6366283e6930cdf063cea5e4b701646204e30a7..b5e72e702f0b5df9824cdff4e3c75b53e29ac757 100644 (file)
@@ -99,8 +99,8 @@ enum Subcommand {
 }
 
 fn main() {
-  let mut mainopts : MainOpts = Default::default();
-  {
+  let mainopts = (||{
+    let mut mainopts : MainOpts = Default::default();
     use argparse::*;
     let mut ap = ArgumentParser::new();
     let mut scope = ap.refer(&mut mainopts.scope);
@@ -115,14 +115,22 @@ fn main() {
     scope.add_option(&["--scope-unix"],
                      StoreConst(None),
                      "use USER scope");
-    let r = ap.parse_args();
+    ap.parse_args()?;
     mem::drop(ap);
-    r
+    /*
+    mainopts.scope.get_or_insert_with(||{
+      let user = env::var("USER").unwrap_or_else(|e|{
+        // want to call ap.error but we have to drop it because
+        // otherwise it still has mainopts.scope borrowed
+        ap.error(
+    });
+     */
+    <Result<_,i32>>::Ok(mainopts)
     /*
 
     Cell::from_mut(&mut mainopts.scope);
     let opts = MainOpts::from_args();
 */
-  }.unwrap_or_else(|rc| std::process::exit(if rc!=0 { 12 } else { 0 }));
+  })().unwrap_or_else(|rc| std::process::exit(if rc!=0 { 12 } else { 0 }));
   println!("{:?}", &mainopts);
 }