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 /src | |
| 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.
Diffstat (limited to 'src')
| -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); -    }  } | 
