feat: Ability to pass the master password as option #40

Merged
awiteb merged 1 commit from awiteb/fix-38 into master 2024-05-10 12:14:47 +02:00 AGit
Showing only changes of commit 62d4060bb8 - Show all commits

View file

@ -17,6 +17,7 @@
use std::{fs, path::PathBuf}; use std::{fs, path::PathBuf};
use clap::Parser; use clap::Parser;
use sha2::{Digest, Sha256};
use crate::{impl_commands, utils, vault::Vaults, LprsCommand, LprsResult}; use crate::{impl_commands, utils, vault::Vaults, LprsCommand, LprsResult};
@ -74,10 +75,13 @@ impl_commands!(Commands, Add Remove List Clean Edit Gen Get Export Import);
pub struct Cli { pub struct Cli {
/// The vaults json file /// The vaults json file
#[arg(short = 'f', long)] #[arg(short = 'f', long)]
pub vaults_file: Option<PathBuf>, pub vaults_file: Option<PathBuf>,
/// Show the logs in the stdout /// Show the logs in the stdout
#[arg(short, long)] #[arg(short, long)]
pub verbose: bool, pub verbose: bool,
/// The master password, or you will prompt it
#[arg(short, long)]
pub master_password: Option<String>,
#[command(subcommand)] #[command(subcommand)]
/// The provided command to run /// The provided command to run
@ -121,8 +125,11 @@ impl Cli {
} }
} else { } else {
log::info!("Reloading the vaults file"); log::info!("Reloading the vaults file");
let master_password = let master_password = if let Some(plain_master_password) = self.master_password {
utils::master_password_prompt(fs::read(&vaults_file)?.is_empty())?; Sha256::digest(plain_master_password).into()
} else {
utils::master_password_prompt(fs::read(&vaults_file)?.is_empty())?
};
Vaults::try_reload(vaults_file, master_password)? Vaults::try_reload(vaults_file, master_password)?
}; };