From 5d30b8b021d5e2172aa8bbaafaa31c10980c4107 Mon Sep 17 00:00:00 2001 From: Awiteb Date: Wed, 24 Jul 2024 10:35:42 +0300 Subject: [PATCH] feat: Remove vault field if its value is empty string Signed-off-by: Awiteb --- src/cli/edit_command.rs | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/cli/edit_command.rs b/src/cli/edit_command.rs index 6241bf4..6fd2ee2 100644 --- a/src/cli/edit_command.rs +++ b/src/cli/edit_command.rs @@ -82,23 +82,43 @@ impl LprsCommand for Edit { if let Some(new_name) = self.name { vault.name = new_name; } - if self.password.is_some() { - vault.password = utils::user_secret(self.password, "New vault password:", false)?; + if let Some(ref new_password) = self.password { + if new_password.as_deref().is_some_and(|s| s.is_empty()) { + vault.password = None; + } else { + vault.password = utils::user_secret(self.password, "New vault password:", false)?; + } } if let Some(totp_secret) = utils::user_secret(self.totp_secret, "TOTP Secret:", false)? { - cipher::base32_decode(&totp_secret).map_err(|_| { - LprsError::Base32("Invalid TOTP secret, must be valid base32 string".to_owned()) - })?; - vault.totp_secret = Some(totp_secret); + if totp_secret.is_empty() { + vault.totp_secret = None; + } else { + cipher::base32_decode(&totp_secret).map_err(|_| { + LprsError::Base32("Invalid TOTP secret, must be valid base32 string".to_owned()) + })?; + vault.totp_secret = Some(totp_secret); + } } if let Some(new_username) = self.username { - vault.username = Some(new_username); + if new_username.is_empty() { + vault.username = None; + } else { + vault.username = Some(new_username); + } } if let Some(new_service) = self.service { - vault.service = Some(new_service); + if new_service.is_empty() { + vault.service = None; + } else { + vault.service = Some(new_service); + } } if let Some(new_note) = self.note { - vault.note = Some(new_note); + if new_note.is_empty() { + vault.note = None; + } else { + vault.note = Some(new_note); + } } utils::apply_custom_fields(&mut vault.custom_fields, self.custom_fields);