diff options
| -rw-r--r-- | src/main.rs | 26 | 
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(())  } | 
