From 9cda2bf18d0ee135acd01af1009804a5de05deed Mon Sep 17 00:00:00 2001 From: Daniele Tricoli Date: Wed, 21 Nov 2018 00:23:51 +0100 Subject: [PATCH] Show parsing errors properly --- src/main.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 23eb4f0..01e7872 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,6 +14,7 @@ pub mod parsers; use std::collections::BTreeMap; use std::fs; +use std::process; use clap::{App, Arg}; @@ -45,15 +46,23 @@ fn main() { .value_name("FILE"), ).get_matches(); - let config = fs::read_to_string(matches.value_of("config").unwrap()) + let config_file = fs::read_to_string(matches.value_of("config").unwrap()) .expect("Can't read the configuration file."); - let mut parsed = slice::parse(&config).expect("Unable to parse."); + + let mut config = match slice::parse(&config_file) { + Ok(config) => config, + Err(err) => { + println!("An error occurred parsing configuration file:"); + println!("{}", err); + process::exit(1); + } + }; let profile = fs::read_to_string(matches.value_of("profile").unwrap()) .expect("Can't read the profile file."); let profile_map: BTreeMap = serde_yaml::from_str(&profile).unwrap(); - parsed.update(profile_map); + config.update(profile_map); - parsed.print(); + config.print(); }