From 01c3824b59289d8a70ae962de310e5f79c7a92ec Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Fri, 22 Apr 2016 09:29:10 -0400 Subject: Get the full integration working for real Rename `handle_alias` to `write_alias` and implement the function. This function integrates all our steps together and writes our new alias if we have one. Alter our `main` function to remove some of the old code. Don't convert STDIN to a vector. That was naïve. Instead iterate over its lines directly. Handle all our errors with either a "no news is good news" or a panic. --- src/main.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index cba6d9e..547bae7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -63,7 +63,12 @@ impl Alias { } } -fn handle_alias(s: &str) { +fn write_alias(from: String) -> Result<(), AliasSearchError> { + let mut alias = Alias::new(&from); + let similar_aliases = try!(find_alias_in_file(&alias, "./testaliases")); + alias.update_alias_id(similar_aliases); + try!(alias.write_to_file("./testaliases")); + Ok(()) } #[derive(Debug)] @@ -128,17 +133,15 @@ fn find_alias_in_file(alias: &Alias, file: &str) -> Result, AliasSea fn main() { let stdin = io::stdin(); - let input: Vec = stdin.lock().lines().map(|line| line.unwrap()).collect(); - for line in &input { + for line in stdin.lock().lines() { + let line = line.unwrap(); if line.starts_with("From: ") { - println!("!!!!!!!! {}", line); - // run matcher function - handle_alias(line); + match write_alias(line) { + Ok(_) => return, + Err(AliasSearchError::NotFound) | Err(AliasSearchError::EmailExists) => return, + Err(e) => panic!(e), + }; } } - - for l in &input { - println!("{}", l); - } } -- cgit v1.2.3