upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/git_remote_helper.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-08-05 12:14:00 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-08-05 12:14:00 +0100
commit36b336716048058a8c37731b3f0968b4dc37a071 (patch)
tree27ecd0961668ba5f41e8c0a6cf743ff69dd049e4 /src/git_remote_helper.rs
parent8e4e3e56a1806ae37941a6498a01f00e5361e9a8 (diff)
refactr(remote) `list` abstract `list_from_remotes`
In preparation for its reuse within `push`
Diffstat (limited to 'src/git_remote_helper.rs')
-rw-r--r--src/git_remote_helper.rs39
1 files changed, 24 insertions, 15 deletions
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(
227 227
228 let term = console::Term::stderr(); 228 let term = console::Term::stderr();
229 229
230 let mut remote_states = HashMap::new(); 230 let remote_states = list_from_remotes(&term, git_repo, &repo_ref.git_server)?;
231 for url in &repo_ref.git_server {
232 term.write_line(format!("fetching refs list: {url}...").as_str())?;
233 match list_from_remote(git_repo, url) {
234 Ok(remote_state) => {
235 remote_states.insert(url.clone(), remote_state);
236 }
237 Err(error) => {
238 term.write_line(
239 format!("WARNING: failed to list refs from {url} error: {error}").as_str(),
240 )?;
241 }
242 }
243 term.clear_last_lines(1)?;
244 }
245 231
246 let state = if let Some(nostr_state) = nostr_state { 232 let state = if let Some(nostr_state) = nostr_state {
247 for (name, value) in &nostr_state.state { 233 for (name, value) in &nostr_state.state {
@@ -287,6 +273,29 @@ async fn list(
287 Ok(remote_states) 273 Ok(remote_states)
288} 274}
289 275
276fn list_from_remotes(
277 term: &console::Term,
278 git_repo: &Repo,
279 git_servers: &Vec<String>,
280) -> Result<HashMap<String, HashMap<String, String>>> {
281 let mut remote_states = HashMap::new();
282 for url in git_servers {
283 term.write_line(format!("fetching refs list: {url}...").as_str())?;
284 match list_from_remote(git_repo, url) {
285 Ok(remote_state) => {
286 remote_states.insert(url.clone(), remote_state);
287 }
288 Err(error) => {
289 term.write_line(
290 format!("WARNING: failed to list refs from {url} error: {error}").as_str(),
291 )?;
292 }
293 }
294 term.clear_last_lines(1)?;
295 }
296 Ok(remote_states)
297}
298
290fn list_from_remote( 299fn list_from_remote(
291 git_repo: &Repo, 300 git_repo: &Repo,
292 git_server_remote_url: &str, 301 git_server_remote_url: &str,