aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main.rs26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 5e10b64..8961e86 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,3 +1,5 @@
+#[macro_use]
+extern crate error_chain;
extern crate getopts;
extern crate meetup_find_events_rss;
@@ -9,12 +11,27 @@ use std::process::exit;
use meetup_find_events_rss::build_rss;
+mod errors {
+ error_chain! {}
+}
+
+use errors::*;
+
+fn main() {
+ if let Err(ref e) = run() {
+ use error_chain::ChainedError;
+
+ eprintln!("{}", e.display_chain());
+ exit(1);
+ }
+}
+
fn print_usage(opts: Options) {
let brief = "usage: meetup-find-events-rss";
print!("{}", opts.usage(&brief));
}
-fn main() {
+fn run() -> Result<()> {
let args: Vec<String> = env::args().collect();
let mut opts = Options::new();
@@ -36,7 +53,8 @@ fn main() {
if opt_matches.opt_present("h") {
print_usage(opts);
- return;
+
+ return Ok(());
}
let meetup_token = opt_matches.opt_str("meetup-api-token").unwrap();
@@ -48,5 +66,7 @@ fn main() {
"2018-04-14".to_owned(),
None,
None,
- ).unwrap();
+ ).chain_err(|| "could not write RSS feed.")?;
+
+ Ok(())
}