feat: Ability to pass the master password as option #40
1 changed files with 11 additions and 4 deletions
|
@ -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)?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue