on-email 0.1.0

Email event handler. Subscribe to an email type for an email account. Call arbitrary programs upon receipt.
mod config;
mod mailsearch;
use config::Config;
use mailsearch::{MailQuery, MailSearch};
use std::env;

fn main() -> Result<(), mailsearch::Error> {
    let config = Config::parse(env::args());
    let mailsearch = MailSearch {
        domain: config.domain,
        mailbox: config.mailbox,
        email: config.email,
        password: config.password,
    };

    for ref command in config.watches {
        let matching_emails = mailsearch.search(command.into())?;
        for mail in matching_emails {
            println!("{}", serde_json::to_string(&mail).unwrap());
        }
    }

    Ok(())
}

impl config::OnEmailWatch {
    fn into(&self) -> MailQuery {
        MailQuery {
            subject: &self.subject,
            to: &self.to,
            from: &self.from,
            body: &self.body,
            tag: &self.tag,
        }
    }
}