use super::*;
#[derive(Debug, clap::Subcommand)]
pub enum CommandPassword {
V1,
V2,
}
impl CommandPassword {
pub fn process<T: AsMut<S>, S: ToolState, W: Write>(
&self,
mut tool_state: T,
out: &mut W,
) -> Result<(), Error> {
let tool_state = tool_state.as_mut();
let secret = tool_state.current_secret()?;
match self {
CommandPassword::V1 => {
let keypath = tool_state.get_keypath()?;
tool_state
.key_map_mut()
.update(keypath)
.unwrap()
.add_primitive("password-v1");
write!(out, "{}", secret.extract_password_v1()?)?;
}
CommandPassword::V2 => {
let keypath = tool_state.get_keypath()?;
tool_state
.key_map_mut()
.update(keypath)
.unwrap()
.add_primitive("password-v2");
write!(out, "{}", secret.extract_password_v2()?)?;
}
}
Ok(())
}
}