summaryrefslogtreecommitdiff
path: root/src/cmd/init.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-10 09:12:54 +0300
committerLars Wirzenius <liw@liw.fi>2021-04-10 10:29:27 +0300
commit822a2f8c6c4d83d82d4543eb5fcf0ed01df21435 (patch)
treef826a92830449c298c628a0398b0f03b2e3210c6 /src/cmd/init.rs
parente13ef6a773755e8eed4d0fb1e55f3bd80a6c5cfd (diff)
downloadobnam2-822a2f8c6c4d83d82d4543eb5fcf0ed01df21435.tar.gz
refactor: struct Init subcommand
Diffstat (limited to 'src/cmd/init.rs')
-rw-r--r--src/cmd/init.rs43
1 files changed, 26 insertions, 17 deletions
diff --git a/src/cmd/init.rs b/src/cmd/init.rs
index fb8a6af..462174e 100644
--- a/src/cmd/init.rs
+++ b/src/cmd/init.rs
@@ -2,27 +2,36 @@ use crate::config::ClientConfigWithoutPasswords;
use crate::error::ObnamError;
use crate::passwords::{passwords_filename, Passwords};
use std::path::Path;
+use structopt::StructOpt;
const PROMPT: &str = "Obnam passphrase: ";
-pub fn init(
- config: &ClientConfigWithoutPasswords,
- config_filename: &Path,
+#[derive(Debug, StructOpt)]
+pub struct Init {
+ #[structopt(long)]
insecure_passphrase: Option<String>,
-) -> Result<(), ObnamError> {
- if !config.encrypt {
- panic!("no encryption specified");
- }
+}
- let passphrase = match insecure_passphrase {
- Some(x) => x,
- None => rpassword::read_password_from_tty(Some(PROMPT)).unwrap(),
- };
+impl Init {
+ pub fn run(
+ &self,
+ config: &ClientConfigWithoutPasswords,
+ config_filename: &Path,
+ ) -> Result<(), ObnamError> {
+ if !config.encrypt {
+ panic!("no encryption specified");
+ }
- let passwords = Passwords::new(&passphrase);
- let filename = passwords_filename(config_filename);
- passwords
- .save(&filename)
- .map_err(|err| ObnamError::PasswordSave(filename, err))?;
- Ok(())
+ let passphrase = match &self.insecure_passphrase {
+ Some(x) => x.to_string(),
+ None => rpassword::read_password_from_tty(Some(PROMPT)).unwrap(),
+ };
+
+ let passwords = Passwords::new(&passphrase);
+ let filename = passwords_filename(config_filename);
+ passwords
+ .save(&filename)
+ .map_err(|err| ObnamError::PasswordSave(filename, err))?;
+ Ok(())
+ }
}