use anyhow::Result;
use clap::Parser;
use io_calendar::calendar::Calendar;
use pimalaya_toolbox::terminal::printer::{Message, Printer};
use crate::{account::Account, client::Client};
#[derive(Debug, Parser)]
pub struct UpdateCalendarCommand {
pub id: String,
#[arg(long, short)]
pub name: Option<String>,
#[arg(long, short, alias = "desc")]
pub description: Option<String>,
#[arg(long, short = 'C')]
pub color: Option<String>,
}
impl UpdateCalendarCommand {
pub fn execute(self, printer: &mut impl Printer, account: Account) -> Result<()> {
let mut client = Client::new(&account)?;
let calendar = Calendar {
id: self.id,
display_name: self.name,
description: self.description,
color: self.color,
};
client.update_calendar(calendar)?;
printer.out(Message::new("Calendar successfully updated"))
}
}