diff options
| author | Teddy Wing | 2016-04-22 09:29:10 -0400 |
|---|---|---|
| committer | Teddy Wing | 2016-04-22 09:32:34 -0400 |
| commit | 01c3824b59289d8a70ae962de310e5f79c7a92ec (patch) | |
| tree | afa18ab20f6611c04e31244a35345816bd04cac2 | |
| parent | 622dbe1cf22472c4b72867a7d34b289afaba5160 (diff) | |
| download | mutt-alias-auto-add-01c3824b59289d8a70ae962de310e5f79c7a92ec.tar.bz2 | |
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.
| -rw-r--r-- | src/main.rs | 23 |
1 files changed, 13 insertions, 10 deletions
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<Vec<String>, AliasSea fn main() { let stdin = io::stdin(); - let input: Vec<String> = 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); - } } |
