diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-11-11 08:31:46 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-11-13 14:49:00 +0000 |
| commit | 65f3bd360c065aca493eddf7eb5d3d8191a84b56 (patch) | |
| tree | b4350d90a21519a2435a88ba9d623625ddd4ee6a /src/bin/git_remote_nostr/list.rs | |
| parent | 52370f542dad87ab029a5d701cc46658d5aef91b (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/git_remote_nostr/list.rs')
| -rw-r--r-- | src/bin/git_remote_nostr/list.rs | 39 |
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 | }; |
| 16 | use repo_ref::RepoRef; | 16 | use repo_ref::RepoRef; |
| 17 | 17 | ||
| 18 | use crate::{fetch::make_commits_for_proposal, git::Repo}; | 18 | use crate::{fetch::make_commits_for_proposal, git::Repo}; |
| 19 | 19 | ||
| 20 | #[allow(clippy::too_many_lines)] | ||
| 20 | pub async fn run_list( | 21 | pub 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 |