use std::process::Command;

use eyre::{anyhow, bail, Result};
pub fn get_osx_keychain_password(
    osx_key_service: &str,
    osx_key_user: &str,
) -> Result<String> {
    let cmd = Command::new("/usr/bin/security")
        .args([
            "-q",
            "find-generic-password",
            "-w",
            "-a",
            osx_key_user,
            "-s",
            osx_key_service,
        ])
        .output();

    match cmd {
        Ok(output) => {
            if output.status.success() {
                let password = String::from_utf8(output.stdout)?;
                Ok(password.trim().to_string())
            } else {
                bail!("Failed to retrieve password from OSX Keychain")
            }
        }
        Err(e) => Err(anyhow!("Error executing security command: {}", e)),
    }
}
