From 737b7c5728d1688ace4d35a016fbdaed5ffc4e79 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Fri, 22 Nov 2024 16:15:57 +0000 Subject: feat(login): `ngit login` use cli args previously cli args were only used during other commands to bypass normal login --- src/lib/login/fresh.rs | 18 +++++++++++++++++- src/lib/login/mod.rs | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src/lib/login') diff --git a/src/lib/login/fresh.rs b/src/lib/login/fresh.rs index 524f419..2190844 100644 --- a/src/lib/login/fresh.rs +++ b/src/lib/login/fresh.rs @@ -10,6 +10,7 @@ use qrcode::QrCode; use tokio::{signal, sync::Mutex}; use super::{ + existing::load_existing_login, key_encryption::decrypt_key, print_logged_in_as, user::{get_user_details, UserRef}, @@ -24,7 +25,7 @@ use crate::{ Interactor, InteractorPrompt, Printer, PromptChoiceParms, PromptConfirmParms, PromptInputParms, PromptPasswordParms, }, - client::{send_events, Connect}, + client::{fetch_public_key, send_events, Connect}, git::{remove_git_config_item, save_git_config_item, Repo, RepoActions}, }; @@ -32,9 +33,24 @@ pub async fn fresh_login_or_signup( git_repo: &Option<&Repo>, #[cfg(test)] client: Option<&MockConnect>, #[cfg(not(test))] client: Option<&Client>, + signer_info: Option, save_local: bool, ) -> Result<(Arc, UserRef, SignerInfoSource)> { let (signer, public_key, signer_info, source) = loop { + if let Some(signer_info) = signer_info { + let (signer, _user_ref, source) = load_existing_login( + git_repo, + &Some(signer_info.clone()), + &None, + &Some(SignerInfoSource::CommandLineArguments), + client, + true, + true, + ) + .await?; + let public_key = fetch_public_key(&signer).await?; + break (signer, public_key, signer_info, source); + } match Interactor::default().choice( PromptChoiceParms::default() .with_prompt("login to nostr") diff --git a/src/lib/login/mod.rs b/src/lib/login/mod.rs index b45bc1d..cf62d85 100644 --- a/src/lib/login/mod.rs +++ b/src/lib/login/mod.rs @@ -30,7 +30,7 @@ pub async fn login_or_signup( if res.is_ok() { res } else { - fresh_login_or_signup(git_repo, client, false).await + fresh_login_or_signup(git_repo, client, None, false).await } } -- cgit v1.2.3