use clap::Subcommand;
#[derive(Subcommand)]
pub enum Commands {
Get,
Add {
#[command(flatten)]
args: crate::favorite::AddFavorite,
},
Del { name: String },
Edit {
#[command(flatten)]
args: crate::favorite::EditFavorite,
},
}
impl Commands {
pub async fn handle(self, cli_config: &crate::Config, handle: &objectiveai_cli_sdk::output::Handle) -> Result<(), crate::error::Error> {
let (client, mut config) = crate::config::read(cli_config).await?;
match self {
Commands::Get => {
crate::config::emit_value(&config.functions().profiles().get_favorites(), handle).await;
Ok(())
},
Commands::Add { args } => {
config.functions().profiles().add_favorite(args.into_favorite()?);
crate::config::write(&client, &config, cli_config).await?;
{
objectiveai_cli_sdk::output::Output::<objectiveai_cli_sdk::output::Ok>::Notification(objectiveai_cli_sdk::output::Notification { value: objectiveai_cli_sdk::output::OK }).emit(handle).await;
Ok(())
}
}
Commands::Del { name } => {
config.functions().profiles().del_favorite(&name)?;
crate::config::write(&client, &config, cli_config).await?;
{
objectiveai_cli_sdk::output::Output::<objectiveai_cli_sdk::output::Ok>::Notification(objectiveai_cli_sdk::output::Notification { value: objectiveai_cli_sdk::output::OK }).emit(handle).await;
Ok(())
}
}
Commands::Edit { args } => {
let favorite = config.functions().profiles().edit_favorite(&args.name)?;
args.apply(favorite)?;
crate::config::write(&client, &config, cli_config).await?;
{
objectiveai_cli_sdk::output::Output::<objectiveai_cli_sdk::output::Ok>::Notification(objectiveai_cli_sdk::output::Notification { value: objectiveai_cli_sdk::output::OK }).emit(handle).await;
Ok(())
}
}
}
}
}