diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 42 |
1 files changed, 23 insertions, 19 deletions
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<Error>> { 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(()) |