use anyhow::Result;
use clap::Parser;
use pimalaya_cli::printer::{Message, Printer};
use crate::gmail::client::GmailClient;
#[derive(Debug, Parser)]
pub struct GmailMessageModifyCommand {
#[arg(value_name = "ID")]
pub id: String,
#[arg(long = "add-label", value_name = "ID")]
pub add: Vec<String>,
#[arg(long = "remove-label", value_name = "ID")]
pub remove: Vec<String>,
}
impl GmailMessageModifyCommand {
pub fn execute(self, printer: &mut impl Printer, client: &mut GmailClient) -> Result<()> {
let message = client
.message_modify(&self.id, &self.add, &self.remove)?
.response;
printer.out(Message::new(format!(
"Gmail message `{}` successfully modified",
message.id
)))
}
}