diff --git a/src/cli/message_cli.rs b/src/cli/message_cli.rs index c9b5495..23a2363 100644 --- a/src/cli/message_cli.rs +++ b/src/cli/message_cli.rs @@ -1,8 +1,13 @@ -use clap::Parser; +use clap::{Parser, Subcommand}; use cull_gmail::{GmailClient, MessageList, Result}; use crate::message_trait::Message; +#[derive(Debug, Subcommand)] +enum MessageAction { + List, +} + /// Command line options for the list subcommand #[derive(Debug, Parser)] pub struct MessageCli { @@ -24,13 +29,26 @@ pub struct MessageCli { /// Query string to select messages to list #[arg(short = 'Q', long, display_order = 1, help_heading = "Config")] query: Option, + /// Action: what to do with the message list + #[command(subcommand)] + action: MessageAction, } impl MessageCli { pub(crate) async fn run(&self, client: &mut GmailClient) -> Result<()> { self.set_parameters(client)?; - client.get_messages(self.pages).await + client.get_messages(self.pages).await?; + + match self.action { + MessageAction::List => { + if log::max_level() >= log::Level::Info { + client.log_message_subjects().await?; + } + } + } + + Ok(()) } pub(crate) fn labels(&self) -> &Vec {