use anyhow::{Result, bail};
use sshenv_cli_models::ExportArgs;
use crate::commands::{Context as CmdContext, load_and_unlock_profile};
pub fn run(ctx: &CmdContext, args: ExportArgs) -> Result<()> {
let (vault, _key) = load_and_unlock_profile(&ctx.vault_path, &args.profile)?;
let Some(vars) = vault.profiles.get(&args.profile) else {
bail!("no such profile: {}", args.profile);
};
crate::commands::security::ensure_profile_factor_requirements_met(&vault, &args.profile)?;
crate::commands::security::warn_if_profile_policy_unmet(&vault, &args.profile);
crate::commands::security::warn_if_high_security_profile_stdout(
&vault,
&args.profile,
"export",
);
for (k, v) in vars {
let escaped = v.replace('\'', r"'\''");
println!("export {k}='{escaped}'");
}
Ok(())
}