lich 0.2.0

Minimal password management.
Documentation
use clap;
use common::*;
use std::fs::File;
use std::path::PathBuf;

pub fn run(path: PathBuf, place: &str) -> Result<(), clap::Error> {
    let file = File::open(&path)
        .map_err(|e| read_error(&path, e))?;

    let mut data = decode(&file, &path)?;

    unlock(&mut data, |mut unlocked| {
        match unlocked.get(place) {
            Ok(Some(s)) => {
                println!("{}", s);
                Ok(())
            },
            Ok(None) => Err(error("entry not found")),
            Err(e) => Err(read_error(&path, e))
        }
    })
}