[snowpatch] [PATCH 1/3] Rework main() to return a Result()

Michael Ellerman mpe at ellerman.id.au
Thu Dec 13 13:43:51 AEDT 2018


Turn main() into run() and have it return a Result(). Then in main()
we print a message for the error case.

We could just return Result() directly from main() but that prints the
Err() with {:?} which is ugly.
---
 src/main.rs | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 7a0debaebec4..2e022a3939e9 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -45,8 +45,10 @@ use env_logger::Builder;
 use log::LevelFilter;
 
 use std::env;
+use std::error::Error;
 use std::fs;
 use std::path::Path;
+use std::process;
 use std::string::String;
 use std::sync::Arc;
 use std::thread;
@@ -282,7 +284,7 @@ fn test_patch(
 }
 
 #[cfg_attr(feature = "cargo-clippy", allow(cyclomatic_complexity))]
-fn main() {
+fn run() -> Result<(), Box<Error>> {
     let mut log_builder = Builder::new();
     // By default, log at the "info" level for every module
     log_builder.filter(None, LevelFilter::Info);
@@ -358,7 +360,7 @@ fn main() {
                 test_patch(&settings, &client, &project, &mbox, true);
             }
         }
-        return;
+        return Ok(());
     }
 
     if args.flag_series > 0 {
@@ -385,7 +387,7 @@ fn main() {
                 }
             }
         }
-        return;
+        return Ok(());
     }
 
     // At this point, specifying a project is required
@@ -396,7 +398,7 @@ fn main() {
         let patch = Path::new(&args.flag_mbox);
         test_patch(&settings, &client, &project, patch, true);
 
-        return;
+        return Ok(());
     }
 
     /*
@@ -491,4 +493,13 @@ fn main() {
         info!("Finished testing new revisions, sleeping.");
         thread::sleep(Duration::new(settings.patchwork.polling_interval * 60, 0));
     }
+
+    Ok(())
+}
+
+fn main() {
+     if let Err(e) = run() {
+        println!("Error: {}", e);
+        process::exit(1);
+    }
 }
-- 
2.17.2



More information about the snowpatch mailing list