From 5c473e577023f426af158f59424a0edec1afd6fc Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Wed, 2 Jan 2019 22:55:32 +0200 Subject: Improved error handling --- src/main.rs | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index c6f797a..e39f589 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,28 +37,32 @@ fn main() -> Result<(), Box> { let args = CliArgs::from_args(); for filepath in &args.files { - let qif_result = { - let file = File::open(filepath)?; - let file_reader = BufReader::new(file); - let mut lines = file_reader.lines(); - - let mut qif_file = QifFile::new(lines.next().unwrap()?); - let mut next_entry = Vec::new(); + let file = File::open(filepath)?; + let file_reader = BufReader::new(file); + let mut lines = file_reader.lines(); - for line_result in lines { - let line = line_result?; - if line == String::from("^") { - qif_file.append_non_empty(QifEntry::new(&next_entry)); - next_entry.clear(); - } else { - next_entry.push(line); + if let Some(header_line) = lines.next() { + let qif_result = { + let mut qif_file = QifFile::new(header_line?); + let mut next_entry = Vec::new(); + + for line_result in lines { + let line = line_result?; + if line == String::from("^") { + qif_file.push(QifEntry::new(&next_entry)); + next_entry.clear(); + } else { + next_entry.push(line); + } } - } - qif_file - }; + qif_file + }; - let mut file = File::create(filepath)?; - writeln!(file, "{}", qif_result)?; + let mut file = File::create(filepath)?; + writeln!(file, "{}", qif_result)?; + } else { + println!("{} was empty", filepath.display()); + } } println!("Processed {} files", args.files.len()); Ok(()) -- cgit v1.2.3