shrine 0.1.0

Secrets manager written in rust
Documentation
use crate::shrine::{Closed, Shrine};
use crate::utils::read_password;
use crate::Error;
use secrecy::Secret;
use std::io::{stdout, Write};

pub fn get(
    shrine: Shrine<Closed>,
    password: Option<Secret<String>>,
    key: &String,
) -> Result<(), Error> {
    let password = password.unwrap_or_else(|| read_password(&shrine));

    let shrine = shrine.open(&password)?;

    let secret = shrine
        .get(key.as_ref())
        .ok_or(Error::KeyNotFound(key.to_string()))?;

    let _ = stdout().write_all(secret.expose_secret_as_bytes());

    Ok(())
}