use dialoguer::Confirm;
use crate::cli::output;
use crate::cli::{load_keyfile, prompt_password_for_vault, vault_path, Cli};
use crate::errors::{EnvVaultError, Result};
use crate::vault::VaultStore;
pub fn execute(cli: &Cli, key: &str, force: bool) -> Result<()> {
let path = vault_path(cli)?;
if !force {
let confirmed = Confirm::new()
.with_prompt(format!("Delete secret '{key}'?"))
.default(false)
.interact()
.map_err(|e| EnvVaultError::CommandFailed(format!("confirm prompt: {e}")))?;
if !confirmed {
output::info("Cancelled.");
return Ok(());
}
}
let keyfile = load_keyfile(cli)?;
let vault_id = path.to_string_lossy();
let password = prompt_password_for_vault(Some(&vault_id))?;
let mut store = VaultStore::open(&path, password.as_bytes(), keyfile.as_deref())?;
store.delete_secret(key)?;
store.save()?;
crate::audit::log_audit(cli, "delete", Some(key), None);
output::success(&format!("Deleted secret '{key}'"));
Ok(())
}