From 36b336716048058a8c37731b3f0968b4dc37a071 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Mon, 5 Aug 2024 12:14:00 +0100 Subject: refactr(remote) `list` abstract `list_from_remotes` In preparation for its reuse within `push` --- src/git_remote_helper.rs | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'src/git_remote_helper.rs') diff --git a/src/git_remote_helper.rs b/src/git_remote_helper.rs index e2796b3..13d6c03 100644 --- a/src/git_remote_helper.rs +++ b/src/git_remote_helper.rs @@ -227,21 +227,7 @@ async fn list( let term = console::Term::stderr(); - let mut remote_states = HashMap::new(); - for url in &repo_ref.git_server { - term.write_line(format!("fetching refs list: {url}...").as_str())?; - match list_from_remote(git_repo, url) { - Ok(remote_state) => { - remote_states.insert(url.clone(), remote_state); - } - Err(error) => { - term.write_line( - format!("WARNING: failed to list refs from {url} error: {error}").as_str(), - )?; - } - } - term.clear_last_lines(1)?; - } + let remote_states = list_from_remotes(&term, git_repo, &repo_ref.git_server)?; let state = if let Some(nostr_state) = nostr_state { for (name, value) in &nostr_state.state { @@ -287,6 +273,29 @@ async fn list( Ok(remote_states) } +fn list_from_remotes( + term: &console::Term, + git_repo: &Repo, + git_servers: &Vec, +) -> Result>> { + let mut remote_states = HashMap::new(); + for url in git_servers { + term.write_line(format!("fetching refs list: {url}...").as_str())?; + match list_from_remote(git_repo, url) { + Ok(remote_state) => { + remote_states.insert(url.clone(), remote_state); + } + Err(error) => { + term.write_line( + format!("WARNING: failed to list refs from {url} error: {error}").as_str(), + )?; + } + } + term.clear_last_lines(1)?; + } + Ok(remote_states) +} + fn list_from_remote( git_repo: &Repo, git_server_remote_url: &str, -- cgit v1.2.3