upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2025-11-11 08:31:46 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2025-11-13 14:49:00 +0000
commit65f3bd360c065aca493eddf7eb5d3d8191a84b56 (patch)
treeb4350d90a21519a2435a88ba9d623625ddd4ee6a /src/bin
parent52370f542dad87ab029a5d701cc46658d5aef91b (diff)
fix: out of sync grasp server cli output
so it shows a summary rather than a lot of lines of issues
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/git_remote_nostr/list.rs39
1 files changed, 11 insertions, 28 deletions
diff --git a/src/bin/git_remote_nostr/list.rs b/src/bin/git_remote_nostr/list.rs
index 803cc8f..934160a 100644
--- a/src/bin/git_remote_nostr/list.rs
+++ b/src/bin/git_remote_nostr/list.rs
@@ -8,15 +8,16 @@ use ngit::{
8 fetch::fetch_from_git_server, 8 fetch::fetch_from_git_server,
9 git::{self}, 9 git::{self},
10 git_events::{KIND_PULL_REQUEST, KIND_PULL_REQUEST_UPDATE, event_to_cover_letter, tag_value}, 10 git_events::{KIND_PULL_REQUEST, KIND_PULL_REQUEST_UPDATE, event_to_cover_letter, tag_value},
11 list::{get_ahead_behind, list_from_remotes}, 11 list::{generate_remote_sync_warnings, identify_remote_sync_issues, list_from_remotes},
12 login::get_curent_user, 12 login::get_curent_user,
13 repo_ref::{self}, 13 repo_ref::{self},
14 utils::{get_all_proposals, get_open_or_draft_proposals, get_short_git_server_name}, 14 utils::{get_all_proposals, get_open_or_draft_proposals},
15}; 15};
16use repo_ref::RepoRef; 16use repo_ref::RepoRef;
17 17
18use crate::{fetch::make_commits_for_proposal, git::Repo}; 18use crate::{fetch::make_commits_for_proposal, git::Repo};
19 19
20#[allow(clippy::too_many_lines)]
20pub async fn run_list( 21pub async fn run_list(
21 git_repo: &Repo, 22 git_repo: &Repo,
22 repo_ref: &RepoRef, 23 repo_ref: &RepoRef,
@@ -34,33 +35,15 @@ pub async fn run_list(
34 ); 35 );
35 36
36 let mut state = if let Some(nostr_state) = nostr_state { 37 let mut state = if let Some(nostr_state) = nostr_state {
37 for (name, value) in &nostr_state.state { 38 // Identify sync issues using shared abstraction
38 for (url, (remote_state, _is_grasp_server)) in &remote_states { 39 let remote_issues = identify_remote_sync_issues(git_repo, &nostr_state, &remote_states);
39 let remote_name = get_short_git_server_name(git_repo, url); 40
40 if let Some(remote_value) = remote_state.get(name) { 41 // Generate and print warnings
41 if value.ne(remote_value) { 42 let warnings = generate_remote_sync_warnings(git_repo, &remote_issues, &remote_states);
42 term.write_line( 43 for warning in warnings {
43 format!( 44 term.write_line(&warning)?;
44 "WARNING: {remote_name} {name} is {} nostr ",
45 if let Ok((ahead, behind)) =
46 get_ahead_behind(git_repo, value, remote_value)
47 {
48 format!("{} ahead {} behind", ahead.len(), behind.len())
49 } else {
50 "out of sync with".to_string()
51 }
52 )
53 .as_str(),
54 )?;
55 }
56 } else {
57 term.write_line(
58 format!("WARNING: {remote_name} {name} is missing but tracked on nostr")
59 .as_str(),
60 )?;
61 }
62 }
63 } 45 }
46
64 nostr_state.state 47 nostr_state.state
65 } else { 48 } else {
66 let (state, _is_grasp_server) = repo_ref 49 let (state, _is_grasp_server) = repo_ref