From 8f91b1410c2bc67e6b3da8a1927da31a9dfb09ab Mon Sep 17 00:00:00 2001 From: Conrad Ludgate Date: Sat, 13 Nov 2021 22:40:24 +0000 Subject: chore: some new linting (#201) * chore: some new linting * chore: some more linting * chore: rustfmt --- src/command/login.rs | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) (limited to 'src/command/login.rs') diff --git a/src/command/login.rs b/src/command/login.rs index 57d99009..c4817a5f 100644 --- a/src/command/login.rs +++ b/src/command/login.rs @@ -40,34 +40,13 @@ impl Cmd { return Ok(()); } - // TODO: Maybe get rid of clone - let username = if let Some(username) = self.username.clone() { - username - } else { - eprint!("Please enter username: "); - get_input().expect("Failed to read username from input") - }; - - let password = if let Some(password) = self.password.clone() { - password - } else { - eprint!("Please enter password: "); - get_input().expect("Failed to read email from input") - }; - - let key = if let Some(key) = self.key.clone() { - key - } else { - eprint!("Please enter encryption key: "); - get_input().expect("Failed to read password from input") - }; + let username = or_user_input(&self.username, "username"); + let password = or_user_input(&self.password, "password"); + let key = or_user_input(&self.key, "encryption key"); let session = api_client::login( settings.sync_address.as_str(), - LoginRequest { - username: Cow::Borrowed(&username), - password: Cow::Borrowed(&password), - }, + LoginRequest { username, password }, )?; let session_path = settings.session_path.as_str(); @@ -83,3 +62,14 @@ impl Cmd { Ok(()) } } + +pub(super) fn or_user_input<'a>(value: &'a Option, name: &'static str) -> Cow<'a, str> { + value + .as_deref() + .map_or_else(|| Cow::Owned(read_user_input(name)), Cow::Borrowed) +} + +fn read_user_input(name: &'static str) -> String { + eprint!("Please enter {}: ", name); + get_input().expect("Failed to read from input") +} -- cgit v1.3.1