From 1c2e2da031b970cfa979c909aa8ca36058c856d3 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Fri, 10 Oct 2025 15:19:30 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(cli):=20implement=20trash=20an?= =?UTF-8?q?d=20delete=20actions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add processor struct to handle gmail api interactions - implement trash_messages and delete_messages functions in processor - integrate processor into run_cli to perform actions on messages --- src/cli/run_cli.rs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/cli/run_cli.rs b/src/cli/run_cli.rs index fffc5bc..5674f26 100644 --- a/src/cli/run_cli.rs +++ b/src/cli/run_cli.rs @@ -1,5 +1,5 @@ use clap::Parser; -use cull_gmail::{Config, EolAction, Result}; +use cull_gmail::{Config, EolAction, Processor, Result}; #[derive(Debug, Parser)] pub struct RunCli {} @@ -16,14 +16,32 @@ impl RunCli { log::info!("Executing rule `#{}` for label `{label}`", rule.describe()); - let Some(action) = rule.action() else { + let processor = Processor::new(config.credential_file(), rule); + + let Some(action) = processor.action() else { log::warn!("no valid action specified for rule #{}", rule.id()); continue; }; match action { - EolAction::Trash => log::info!("trashing older messages"), - EolAction::Delete => log::info!("deleting older messages"), + EolAction::Trash => { + log::info!("trashing older messages"); + match processor.trash_messages(&label).await { + Ok(_) => {} + Err(e) => { + log::warn!("action failed for label {label} with error {e}"); + } + } + } + EolAction::Delete => { + log::info!("deleting older messages"); + match processor.delete_messages(&label).await { + Ok(_) => {} + Err(e) => { + log::warn!("action failed for label {label} with error {e}"); + } + } + } } }