use clap::Parser;
use cosmian_kms_client::{KmsClient, kmip_2_1::kmip_types::UniqueIdentifier};
use crate::{
actions::kms::{
labels::CERTIFICATE_ID,
shared::{get_key_uid, utils::destroy},
},
error::result::KmsCliResult,
};
#[derive(Parser, Debug)]
pub struct DestroyCertificateAction {
#[clap(long = CERTIFICATE_ID, short = 'c', group = "certificate-tags")]
pub(crate) certificate_id: Option<String>,
#[clap(
long = "tag",
short = 't',
value_name = "TAG",
group = "certificate-tags"
)]
pub(crate) tags: Option<Vec<String>>,
#[clap(long = "remove", default_value = "false", verbatim_doc_comment)]
remove: bool,
}
impl DestroyCertificateAction {
pub async fn run(&self, kms_rest_client: KmsClient) -> KmsCliResult<UniqueIdentifier> {
let id = get_key_uid(
self.certificate_id.as_ref(),
self.tags.as_ref(),
CERTIFICATE_ID,
)?;
destroy(kms_rest_client, &id, self.remove, None).await
}
}