use anyhow::Result;
use clap::Parser;
use pimalaya_cli::printer::Printer;
use crate::{
account::context::Account,
gmail::{client::GmailClient, labels::list::LabelsTable},
};
#[derive(Debug, Parser)]
pub struct GmailLabelGetCommand {
#[arg(value_name = "ID", required = true)]
pub ids: Vec<String>,
}
impl GmailLabelGetCommand {
pub fn execute(
self,
printer: &mut impl Printer,
account: &mut Account,
client: &mut GmailClient,
) -> Result<()> {
let mut labels = Vec::with_capacity(self.ids.len());
for id in self.ids {
labels.push(client.label_get(&id)?.response);
}
printer.out(LabelsTable::new(account, labels))
}
}