From 896267959bc9e436d7c5d2ee0ff8c8c088fc7274 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Thu, 7 Aug 2025 13:02:08 +0100 Subject: fix(send): PR cli output to keep the user informed of whats happening / happend --- src/bin/ngit/sub_commands/init.rs | 19 ++++--------------- src/bin/ngit/sub_commands/send.rs | 25 ++++++++++++++----------- src/lib/cli_interactor.rs | 18 +++++++++++++++++- 3 files changed, 35 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/bin/ngit/sub_commands/init.rs b/src/bin/ngit/sub_commands/init.rs index 6f3a357..98daee4 100644 --- a/src/bin/ngit/sub_commands/init.rs +++ b/src/bin/ngit/sub_commands/init.rs @@ -9,10 +9,12 @@ use std::{ use anyhow::{Context, Result, bail}; use console::{Style, Term}; -use dialoguer::theme::{ColorfulTheme, Theme}; use ngit::{ UrlWithoutSlash, - cli_interactor::{PromptChoiceParms, PromptConfirmParms, multi_select_with_custom_value}, + cli_interactor::{ + PromptChoiceParms, PromptConfirmParms, multi_select_with_custom_value, + show_multi_input_prompt_success, + }, client::{Params, send_events}, git::nostr_url::{CloneUrl, NostrUrlDecoded}, repo_ref::{ @@ -904,19 +906,6 @@ fn parse_relay_url(s: &str) -> Result { .context(format!("failed to parse relay url: {s}")) } -pub fn show_multi_input_prompt_success(label: &str, values: &[String]) { - let values_str: Vec<&str> = values.iter().map(std::string::String::as_str).collect(); - eprintln!("{}", { - let mut s = String::new(); - let _ = ColorfulTheme::default().format_multi_select_prompt_selection( - &mut s, - label, - &values_str, - ); - s - }); -} - fn push_main_or_master_branch(git_repo: &Repo) -> Result<()> { let main_branch_name = { let local_branches = git_repo diff --git a/src/bin/ngit/sub_commands/send.rs b/src/bin/ngit/sub_commands/send.rs index 05054fd..3ae941f 100644 --- a/src/bin/ngit/sub_commands/send.rs +++ b/src/bin/ngit/sub_commands/send.rs @@ -3,7 +3,9 @@ use std::{path::Path, str::FromStr, thread, time::Duration}; use anyhow::{Context, Result, bail}; use console::Style; use ngit::{ - cli_interactor::{PromptChoiceParms, multi_select_with_custom_value}, + cli_interactor::{ + PromptChoiceParms, multi_select_with_custom_value, show_multi_input_prompt_success, + }, client::{Params, send_events}, git::nostr_url::CloneUrl, git_events::{ @@ -343,12 +345,13 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs, no_fetch: bool) -> Re .collect(); let selections = vec![true; default_choices.len()]; // all selected by default let grasp_servers = multi_select_with_custom_value( - "grasp server(s)", + "alternative grasp server(s)", "grasp server", default_choices, selections, normalize_grasp_server_url, )?; + show_multi_input_prompt_success("alternative grasp server(s)", &grasp_servers); if grasp_servers.is_empty() { // ask again continue; @@ -388,16 +391,16 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs, no_fetch: bool) -> Re } normalised_grasp_servers } else { - println!( - "{} personal-fork so we can push commits to your prefered grasp servers", - if user_repo_ref.is_some() { - "Updating" - } else { - "Creating a" - }, - ); untried_user_grasp_servers }; + println!( + "{} personal-fork so we can push commits to your prefered grasp servers", + if user_repo_ref.is_some() { + "Updating" + } else { + "Creating a" + }, + ); let grasp_servers_as_personal_clone_url: Vec = grasp_servers .iter() @@ -415,7 +418,7 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs, no_fetch: bool) -> Re let updated_user_repo_ref = { if let Some(mut user_repo_ref) = user_repo_ref { for g in &grasp_servers_as_personal_clone_url { - let _ = user_repo_ref.add_grasp_server(g); + user_repo_ref.add_grasp_server(g)?; } user_repo_ref } else { diff --git a/src/lib/cli_interactor.rs b/src/lib/cli_interactor.rs index 8bcda19..e944bf9 100644 --- a/src/lib/cli_interactor.rs +++ b/src/lib/cli_interactor.rs @@ -1,5 +1,8 @@ use anyhow::{Context, Result}; -use dialoguer::{Confirm, Input, Password, theme::ColorfulTheme}; +use dialoguer::{ + Confirm, Input, Password, + theme::{ColorfulTheme, Theme}, +}; use indicatif::TermLike; #[cfg(test)] use mockall::*; @@ -323,6 +326,19 @@ where Ok(selected_choices) } +pub fn show_multi_input_prompt_success(label: &str, values: &[String]) { + let values_str: Vec<&str> = values.iter().map(std::string::String::as_str).collect(); + eprintln!("{}", { + let mut s = String::new(); + let _ = ColorfulTheme::default().format_multi_select_prompt_selection( + &mut s, + label, + &values_str, + ); + s + }); +} + #[derive(Debug, Default)] pub struct Printer { printed_lines: Vec, -- cgit v1.2.3