diff options
Diffstat (limited to 'src/bin/git_remote_nostr')
| -rw-r--r-- | src/bin/git_remote_nostr/list.rs | 2 | ||||
| -rw-r--r-- | src/bin/git_remote_nostr/main.rs | 37 | ||||
| -rw-r--r-- | src/bin/git_remote_nostr/push.rs | 25 | ||||
| -rw-r--r-- | src/bin/git_remote_nostr/utils.rs | 4 |
4 files changed, 20 insertions, 48 deletions
diff --git a/src/bin/git_remote_nostr/list.rs b/src/bin/git_remote_nostr/list.rs index 92faa6b..daff1b6 100644 --- a/src/bin/git_remote_nostr/list.rs +++ b/src/bin/git_remote_nostr/list.rs | |||
| @@ -35,7 +35,7 @@ pub async fn run_list( | |||
| 35 | for_push: bool, | 35 | for_push: bool, |
| 36 | ) -> Result<HashMap<String, HashMap<String, String>>> { | 36 | ) -> Result<HashMap<String, HashMap<String, String>>> { |
| 37 | let nostr_state = | 37 | let nostr_state = |
| 38 | if let Ok(nostr_state) = get_state_from_cache(git_repo.get_path()?, repo_ref).await { | 38 | if let Ok(nostr_state) = get_state_from_cache(Some(git_repo.get_path()?), repo_ref).await { |
| 39 | Some(nostr_state) | 39 | Some(nostr_state) |
| 40 | } else { | 40 | } else { |
| 41 | None | 41 | None |
diff --git a/src/bin/git_remote_nostr/main.rs b/src/bin/git_remote_nostr/main.rs index ed9fe9d..e4f97c7 100644 --- a/src/bin/git_remote_nostr/main.rs +++ b/src/bin/git_remote_nostr/main.rs | |||
| @@ -15,7 +15,7 @@ use std::{ | |||
| 15 | use anyhow::{bail, Context, Result}; | 15 | use anyhow::{bail, Context, Result}; |
| 16 | use client::{consolidate_fetch_reports, get_repo_ref_from_cache, Connect}; | 16 | use client::{consolidate_fetch_reports, get_repo_ref_from_cache, Connect}; |
| 17 | use git::{nostr_url::NostrUrlDecoded, RepoActions}; | 17 | use git::{nostr_url::NostrUrlDecoded, RepoActions}; |
| 18 | use ngit::{client, git, login}; | 18 | use ngit::{client, git, login::existing::load_existing_login}; |
| 19 | use nostr::nips::nip01::Coordinate; | 19 | use nostr::nips::nip01::Coordinate; |
| 20 | use utils::read_line; | 20 | use utils::read_line; |
| 21 | 21 | ||
| @@ -36,38 +36,17 @@ async fn main() -> Result<()> { | |||
| 36 | 36 | ||
| 37 | let mut client = Client::default(); | 37 | let mut client = Client::default(); |
| 38 | 38 | ||
| 39 | if git_repo | 39 | if let Ok((signer, _, _)) = |
| 40 | .get_git_config_item("nostr.npub", None) | 40 | load_existing_login(&Some(&git_repo), &None, &None, &None, None, true, false).await |
| 41 | .is_ok_and(|x| x.is_some()) | ||
| 42 | && (git_repo | ||
| 43 | .get_git_config_item("nostr.nsec", None) | ||
| 44 | .is_ok_and(|x| x.is_some()) | ||
| 45 | || (git_repo | ||
| 46 | .get_git_config_item("nostr.bunker-uri", None) | ||
| 47 | .is_ok_and(|x| x.is_some()) | ||
| 48 | && git_repo | ||
| 49 | .get_git_config_item("nostr.bunker-app-key", None) | ||
| 50 | .is_ok_and(|x| x.is_some()))) | ||
| 51 | { | 41 | { |
| 52 | if let Ok((signer, _)) = login::launch( | 42 | // signer for to respond to relay auth request |
| 53 | &git_repo, | 43 | client.set_signer(signer).await; |
| 54 | &None, | ||
| 55 | &None, | ||
| 56 | &None, | ||
| 57 | &None, | ||
| 58 | Some(&client), | ||
| 59 | false, | ||
| 60 | true, | ||
| 61 | ) | ||
| 62 | .await | ||
| 63 | { | ||
| 64 | client.set_signer(signer).await; | ||
| 65 | }; | ||
| 66 | } | 44 | } |
| 67 | 45 | ||
| 68 | fetching_with_report_for_helper(git_repo_path, &client, &decoded_nostr_url.coordinates).await?; | 46 | fetching_with_report_for_helper(git_repo_path, &client, &decoded_nostr_url.coordinates).await?; |
| 69 | 47 | ||
| 70 | let repo_ref = get_repo_ref_from_cache(git_repo_path, &decoded_nostr_url.coordinates).await?; | 48 | let repo_ref = |
| 49 | get_repo_ref_from_cache(Some(git_repo_path), &decoded_nostr_url.coordinates).await?; | ||
| 71 | 50 | ||
| 72 | let stdin = io::stdin(); | 51 | let stdin = io::stdin(); |
| 73 | let mut line = String::new(); | 52 | let mut line = String::new(); |
| @@ -170,7 +149,7 @@ async fn fetching_with_report_for_helper( | |||
| 170 | let term = console::Term::stderr(); | 149 | let term = console::Term::stderr(); |
| 171 | term.write_line("nostr: fetching...")?; | 150 | term.write_line("nostr: fetching...")?; |
| 172 | let (relay_reports, progress_reporter) = client | 151 | let (relay_reports, progress_reporter) = client |
| 173 | .fetch_all(git_repo_path, repo_coordinates, &HashSet::new()) | 152 | .fetch_all(Some(git_repo_path), repo_coordinates, &HashSet::new()) |
| 174 | .await?; | 153 | .await?; |
| 175 | if !relay_reports.iter().any(std::result::Result::is_err) { | 154 | if !relay_reports.iter().any(std::result::Result::is_err) { |
| 176 | let _ = progress_reporter.clear(); | 155 | let _ = progress_reporter.clear(); |
diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs index 91c901a..7161c5d 100644 --- a/src/bin/git_remote_nostr/push.rs +++ b/src/bin/git_remote_nostr/push.rs | |||
| @@ -8,7 +8,9 @@ use std::{ | |||
| 8 | 8 | ||
| 9 | use anyhow::{anyhow, bail, Context, Result}; | 9 | use anyhow::{anyhow, bail, Context, Result}; |
| 10 | use auth_git2::GitAuthenticator; | 10 | use auth_git2::GitAuthenticator; |
| 11 | use client::{get_events_from_cache, get_state_from_cache, send_events, sign_event, STATE_KIND}; | 11 | use client::{ |
| 12 | get_events_from_local_cache, get_state_from_cache, send_events, sign_event, STATE_KIND, | ||
| 13 | }; | ||
| 12 | use console::Term; | 14 | use console::Term; |
| 13 | use git::{sha1_to_oid, RepoActions}; | 15 | use git::{sha1_to_oid, RepoActions}; |
| 14 | use git2::{Oid, Repository}; | 16 | use git2::{Oid, Repository}; |
| @@ -76,7 +78,7 @@ pub async fn run_push( | |||
| 76 | _ => list_from_remotes(&term, git_repo, &repo_ref.git_server, decoded_nostr_url), | 78 | _ => list_from_remotes(&term, git_repo, &repo_ref.git_server, decoded_nostr_url), |
| 77 | }; | 79 | }; |
| 78 | 80 | ||
| 79 | let nostr_state = get_state_from_cache(git_repo.get_path()?, repo_ref).await; | 81 | let nostr_state = get_state_from_cache(Some(git_repo.get_path()?), repo_ref).await; |
| 80 | 82 | ||
| 81 | let existing_state = { | 83 | let existing_state = { |
| 82 | // if no state events - create from first git server listed | 84 | // if no state events - create from first git server listed |
| @@ -122,17 +124,8 @@ pub async fn run_push( | |||
| 122 | return Ok(()); | 124 | return Ok(()); |
| 123 | } | 125 | } |
| 124 | 126 | ||
| 125 | let (signer, user_ref) = login::launch( | 127 | let (signer, user_ref, _) = |
| 126 | git_repo, | 128 | login::login_or_signup(&Some(git_repo), &None, &None, Some(client)).await?; |
| 127 | &None, | ||
| 128 | &None, | ||
| 129 | &None, | ||
| 130 | &None, | ||
| 131 | Some(client), | ||
| 132 | false, | ||
| 133 | false, | ||
| 134 | ) | ||
| 135 | .await?; | ||
| 136 | 129 | ||
| 137 | if !repo_ref.maintainers.contains(&user_ref.public_key) { | 130 | if !repo_ref.maintainers.contains(&user_ref.public_key) { |
| 138 | for refspec in &git_server_refspecs { | 131 | for refspec in &git_server_refspecs { |
| @@ -306,7 +299,7 @@ pub async fn run_push( | |||
| 306 | term.write_line("broadcast to nostr relays:")?; | 299 | term.write_line("broadcast to nostr relays:")?; |
| 307 | send_events( | 300 | send_events( |
| 308 | client, | 301 | client, |
| 309 | git_repo.get_path()?, | 302 | Some(git_repo.get_path()?), |
| 310 | events, | 303 | events, |
| 311 | user_ref.relays.write(), | 304 | user_ref.relays.write(), |
| 312 | repo_ref.relays.clone(), | 305 | repo_ref.relays.clone(), |
| @@ -897,7 +890,7 @@ async fn get_merged_status_events( | |||
| 897 | // merge commit | 890 | // merge commit |
| 898 | for parent in commit.parents() { | 891 | for parent in commit.parents() { |
| 899 | // lookup parent id | 892 | // lookup parent id |
| 900 | let commit_events = get_events_from_cache( | 893 | let commit_events = get_events_from_local_cache( |
| 901 | git_repo.get_path()?, | 894 | git_repo.get_path()?, |
| 902 | vec![ | 895 | vec![ |
| 903 | nostr::Filter::default() | 896 | nostr::Filter::default() |
| @@ -1045,7 +1038,7 @@ async fn get_proposal_and_revision_root_from_patch( | |||
| 1045 | .clone(), | 1038 | .clone(), |
| 1046 | )?; | 1039 | )?; |
| 1047 | 1040 | ||
| 1048 | get_events_from_cache( | 1041 | get_events_from_local_cache( |
| 1049 | git_repo.get_path()?, | 1042 | git_repo.get_path()?, |
| 1050 | vec![nostr::Filter::default().id(proposal_or_revision_id)], | 1043 | vec![nostr::Filter::default().id(proposal_or_revision_id)], |
| 1051 | ) | 1044 | ) |
diff --git a/src/bin/git_remote_nostr/utils.rs b/src/bin/git_remote_nostr/utils.rs index a8bbd6f..b54ce6b 100644 --- a/src/bin/git_remote_nostr/utils.rs +++ b/src/bin/git_remote_nostr/utils.rs | |||
| @@ -10,7 +10,7 @@ use anyhow::{bail, Context, Result}; | |||
| 10 | use git2::Repository; | 10 | use git2::Repository; |
| 11 | use ngit::{ | 11 | use ngit::{ |
| 12 | client::{ | 12 | client::{ |
| 13 | get_all_proposal_patch_events_from_cache, get_events_from_cache, | 13 | get_all_proposal_patch_events_from_cache, get_events_from_local_cache, |
| 14 | get_proposals_and_revisions_from_cache, | 14 | get_proposals_and_revisions_from_cache, |
| 15 | }, | 15 | }, |
| 16 | git::{ | 16 | git::{ |
| @@ -108,7 +108,7 @@ pub async fn get_open_proposals( | |||
| 108 | .collect(); | 108 | .collect(); |
| 109 | 109 | ||
| 110 | let statuses: Vec<nostr::Event> = { | 110 | let statuses: Vec<nostr::Event> = { |
| 111 | let mut statuses = get_events_from_cache( | 111 | let mut statuses = get_events_from_local_cache( |
| 112 | git_repo_path, | 112 | git_repo_path, |
| 113 | vec![ | 113 | vec![ |
| 114 | nostr::Filter::default() | 114 | nostr::Filter::default() |