use futures::future::BoxFuture;
use crate::prelude::*;
pub(crate) mod file_watcher;
pub(crate) mod time;
pub(crate) trait Trigger {
fn wait_for(&self) -> BoxFuture<'static, Result<()>>;
}
pub(crate) type TriggerBox = Box<dyn Trigger + Send + Sync>;
fn build_trigger(trigger: config::Trigger) -> Result<TriggerBox> {
match trigger {
config::Trigger::Every { duration } => Ok(Box::new(triggers::time::Every::new(duration))),
}
}
pub(crate) fn build_triggers(triggers: Vec<config::Trigger>) -> Result<Vec<TriggerBox>> {
triggers
.into_iter()
.map(|trigger| build_trigger(trigger))
.collect()
}