diff --git a/src/lib.rs b/src/lib.rs index 5166aed..6108be6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,6 +7,7 @@ pub mod run { use crate::sink::{BskySink, PostQuote, SinkManager, StdoutSink}; use crate::storage::queue::QueueManager; + use crate::storage::source::{QuoteFilter, SourceManager}; use crate::storage::{ FetchQuote, QuoteCycle, queue::MemoryQueueStorage, queue::RedisQueueStorage, source::FsFilterSourceManager, @@ -37,6 +38,12 @@ pub mod run { // Debug schedule "*/10 * * * * * *" }; + let source = FsFilterSourceManager::spawn(if !is_debug { + FsFilterSourceManager::new(QuoteFilter::new_from_glob("quotes/**/*.txt".to_string())) + } else { + // Debug quotes fall back to the default configuration + FsFilterSourceManager::default() + }); let use_redis = std::env::var("USE_REDIS").unwrap_or("0".to_string()) == "1"; if use_redis { @@ -51,15 +58,16 @@ pub mod run { let queue = RedisQueueStorage::spawn(RedisQueueStorage::new(con, DEFAULT_KEY.to_string())); - run_cycle(schedule, queue, bsky).await + run_cycle(schedule, source, queue, bsky).await } else { let queue = MemoryQueueStorage::spawn(MemoryQueueStorage::new()); - run_cycle(schedule, queue, bsky).await + run_cycle(schedule, source, queue, bsky).await } } - async fn run_cycle( + async fn run_cycle( schedule: &str, + source: ActorRef, queue: ActorRef, bsky: Option>, ) -> Result<(), Box> { @@ -68,10 +76,7 @@ pub mod run { SinkManager::spawn(SinkManager::new(Some(stdout), bsky)) }; - let cycle = { - let source = FsFilterSourceManager::spawn(FsFilterSourceManager::default()); - QuoteCycle::spawn(QuoteCycle::with_thread_rng(source, queue)) - }; + let cycle = { QuoteCycle::spawn(QuoteCycle::with_thread_rng(source, queue)) }; use cron_lite::Schedule; const POSTING_TIMEOUT: Duration = Duration::from_secs(60);