diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-11-13 17:18:35 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-11-13 22:08:56 +0000 |
| commit | 82c7a95f6e9aa266d2f0d2035a0ce4f1715b62ad (patch) | |
| tree | 9de47f91a6157f9361b2bf28618d89873a55227a /src/bin | |
| parent | ebab8d2aa487d1814e802c5a51b19d4bb1592e01 (diff) | |
feat(list): make list async and include sync report inline
copy relay fetching approach to async and reporting
Diffstat (limited to 'src/bin')
| -rw-r--r-- | src/bin/git_remote_nostr/list.rs | 16 | ||||
| -rw-r--r-- | src/bin/git_remote_nostr/push.rs | 8 | ||||
| -rw-r--r-- | src/bin/ngit/sub_commands/sync.rs | 10 |
3 files changed, 19 insertions, 15 deletions
diff --git a/src/bin/git_remote_nostr/list.rs b/src/bin/git_remote_nostr/list.rs index d06d202..7753ba1 100644 --- a/src/bin/git_remote_nostr/list.rs +++ b/src/bin/git_remote_nostr/list.rs | |||
| @@ -8,7 +8,7 @@ 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::{generate_remote_sync_warnings, identify_remote_sync_issues, list_from_remotes}, | 11 | list::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}, | 14 | utils::{get_all_proposals, get_open_or_draft_proposals}, |
| @@ -27,23 +27,17 @@ pub async fn run_list( | |||
| 27 | 27 | ||
| 28 | let term = console::Term::stderr(); | 28 | let term = console::Term::stderr(); |
| 29 | 29 | ||
| 30 | term.write_line("git servers: listing refs...")?; | ||
| 30 | let remote_states = list_from_remotes( | 31 | let remote_states = list_from_remotes( |
| 31 | &term, | 32 | &term, |
| 32 | git_repo, | 33 | git_repo, |
| 33 | &repo_ref.git_server, | 34 | &repo_ref.git_server, |
| 34 | &repo_ref.to_nostr_git_url(&None), | 35 | &repo_ref.to_nostr_git_url(&None), |
| 35 | ); | 36 | nostr_state.as_ref(), |
| 37 | ) | ||
| 38 | .await; | ||
| 36 | 39 | ||
| 37 | let mut state = if let Some(nostr_state) = nostr_state { | 40 | let mut state = if let Some(nostr_state) = nostr_state { |
| 38 | // Identify sync issues using shared abstraction | ||
| 39 | let remote_issues = identify_remote_sync_issues(git_repo, &nostr_state, &remote_states); | ||
| 40 | |||
| 41 | // Generate and print warnings | ||
| 42 | let warnings = generate_remote_sync_warnings(&remote_issues, &remote_states); | ||
| 43 | for warning in warnings { | ||
| 44 | term.write_line(&warning)?; | ||
| 45 | } | ||
| 46 | |||
| 47 | nostr_state.state | 41 | nostr_state.state |
| 48 | } else { | 42 | } else { |
| 49 | let (state, _is_grasp_server) = repo_ref | 43 | let (state, _is_grasp_server) = repo_ref |
diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs index 12350e7..9cf2c52 100644 --- a/src/bin/git_remote_nostr/push.rs +++ b/src/bin/git_remote_nostr/push.rs | |||
| @@ -69,14 +69,18 @@ pub async fn run_push( | |||
| 69 | 69 | ||
| 70 | let term = console::Term::stderr(); | 70 | let term = console::Term::stderr(); |
| 71 | 71 | ||
| 72 | let list_outputs = list_outputs.unwrap_or_else(|| { | 72 | let list_outputs = if let Some(outputs) = list_outputs { |
| 73 | outputs | ||
| 74 | } else { | ||
| 73 | list_from_remotes( | 75 | list_from_remotes( |
| 74 | &term, | 76 | &term, |
| 75 | git_repo, | 77 | git_repo, |
| 76 | &repo_ref.git_server, | 78 | &repo_ref.git_server, |
| 77 | &repo_ref.to_nostr_git_url(&None), | 79 | &repo_ref.to_nostr_git_url(&None), |
| 80 | None, | ||
| 78 | ) | 81 | ) |
| 79 | }); | 82 | .await |
| 83 | }; | ||
| 80 | 84 | ||
| 81 | let existing_state = { | 85 | let existing_state = { |
| 82 | // if no state events - create from first git server listed | 86 | // if no state events - create from first git server listed |
diff --git a/src/bin/ngit/sub_commands/sync.rs b/src/bin/ngit/sub_commands/sync.rs index d84feb6..daebb1b 100644 --- a/src/bin/ngit/sub_commands/sync.rs +++ b/src/bin/ngit/sub_commands/sync.rs | |||
| @@ -77,8 +77,14 @@ pub async fn launch(args: &SubCommandArgs) -> Result<()> { | |||
| 77 | 77 | ||
| 78 | let term = console::Term::stderr(); | 78 | let term = console::Term::stderr(); |
| 79 | 79 | ||
| 80 | let remote_states = | 80 | let remote_states = list_from_remotes( |
| 81 | list_from_remotes(&term, &git_repo, &repo_ref.git_server, &decoded_nostr_url); | 81 | &term, |
| 82 | &git_repo, | ||
| 83 | &repo_ref.git_server, | ||
| 84 | &decoded_nostr_url, | ||
| 85 | Some(&nostr_state), | ||
| 86 | ) | ||
| 87 | .await; | ||
| 82 | 88 | ||
| 83 | let missing_refs = | 89 | let missing_refs = |
| 84 | fetch_missing_refs(&git_repo, &nostr_state, &remote_states, &decoded_nostr_url); | 90 | fetch_missing_refs(&git_repo, &nostr_state, &remote_states, &decoded_nostr_url); |