aboutsummaryrefslogtreecommitdiffstats
path: root/src/command
diff options
context:
space:
mode:
Diffstat (limited to 'src/command')
-rw-r--r--src/command/client/sync/login.rs9
-rw-r--r--src/command/client/sync/register.rs8
2 files changed, 12 insertions, 5 deletions
diff --git a/src/command/client/sync/login.rs b/src/command/client/sync/login.rs
index 8056d1bb..29222563 100644
--- a/src/command/client/sync/login.rs
+++ b/src/command/client/sync/login.rs
@@ -6,6 +6,7 @@ use tokio::{fs::File, io::AsyncWriteExt};
use atuin_client::{api_client, settings::Settings};
use atuin_common::api::LoginRequest;
+use rpassword::prompt_password;
#[derive(Parser)]
#[clap(setting(AppSettings::DeriveDisplayOrder))]
@@ -40,9 +41,8 @@ impl Cmd {
}
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 password = self.password.clone().unwrap_or_else(read_user_password);
let session = api_client::login(
settings.sync_address.as_str(),
LoginRequest { username, password },
@@ -67,6 +67,11 @@ pub(super) fn or_user_input(value: &'_ Option<String>, name: &'static str) -> St
value.clone().unwrap_or_else(|| read_user_input(name))
}
+pub(super) fn read_user_password() -> String {
+ let password = prompt_password("Please enter password: ");
+ password.expect("Failed to read from input")
+}
+
fn read_user_input(name: &'static str) -> String {
eprint!("Please enter {}: ", name);
get_input().expect("Failed to read from input")
diff --git a/src/command/client/sync/register.rs b/src/command/client/sync/register.rs
index fe126237..2b5b9ced 100644
--- a/src/command/client/sync/register.rs
+++ b/src/command/client/sync/register.rs
@@ -11,10 +11,10 @@ pub struct Cmd {
pub username: Option<String>,
#[clap(long, short)]
- pub email: Option<String>,
+ pub password: Option<String>,
#[clap(long, short)]
- pub password: Option<String>,
+ pub email: Option<String>,
}
impl Cmd {
@@ -32,7 +32,9 @@ pub async fn run(
use super::login::or_user_input;
let username = or_user_input(username, "username");
let email = or_user_input(email, "email");
- let password = or_user_input(password, "password");
+ let password = password
+ .clone()
+ .unwrap_or_else(super::login::read_user_password);
let session =
api_client::register(settings.sync_address.as_str(), &username, &email, &password).await?;