minivault 1.0.0

Local-only, light-weight Encryption as a Service.
Documentation
use std::path::PathBuf;

use clap::Parser;
use color_eyre::eyre::Result;

use crate::client::MVClient;
use minivault::vault::util::prompt_or_get;

#[derive(Parser, Debug, Clone)]
pub struct UnlockArgs {
    #[arg(short, long)]
    username: Option<String>,
}

impl UnlockArgs {
    pub async fn exec(&self, socket: &PathBuf) -> Result<()> {
        println!("Using {:?}", socket);
        let client = MVClient::new(socket);
        let username = prompt_or_get(self.username.clone(), "Username");
        let password = rpassword::prompt_password("Password: ")?;
        client.unlock(username, password).await?;
        println!("Unlocked minivault!");
        Ok(())
    }
}