use anyhow::Result;
use clap::Parser;
use io_mbox::mbox::delete::MboxDelete;
use pimalaya_cli::printer::{Message, Printer};
use crate::mbox::{
arg::RequiredMboxPathFlag,
client::{MboxClient, validate_mbox_name},
};
#[derive(Debug, Parser)]
pub struct MboxMailboxDeleteCommand {
#[command(flatten)]
pub mbox_path: RequiredMboxPathFlag,
}
impl MboxMailboxDeleteCommand {
pub fn execute(self, printer: &mut impl Printer, client: &mut MboxClient) -> Result<()> {
validate_mbox_name(&self.mbox_path.inner)?;
let path = client.resolve_mbox(&self.mbox_path.inner);
client.run(MboxDelete::new(path, client.lock.clone()))?;
printer.out(Message::new("Mbox successfully deleted"))
}
}