upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/bin/git_remote_nostr
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/git_remote_nostr')
-rw-r--r--src/bin/git_remote_nostr/list.rs2
-rw-r--r--src/bin/git_remote_nostr/main.rs37
-rw-r--r--src/bin/git_remote_nostr/push.rs25
-rw-r--r--src/bin/git_remote_nostr/utils.rs4
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::{
15use anyhow::{bail, Context, Result}; 15use anyhow::{bail, Context, Result};
16use client::{consolidate_fetch_reports, get_repo_ref_from_cache, Connect}; 16use client::{consolidate_fetch_reports, get_repo_ref_from_cache, Connect};
17use git::{nostr_url::NostrUrlDecoded, RepoActions}; 17use git::{nostr_url::NostrUrlDecoded, RepoActions};
18use ngit::{client, git, login}; 18use ngit::{client, git, login::existing::load_existing_login};
19use nostr::nips::nip01::Coordinate; 19use nostr::nips::nip01::Coordinate;
20use utils::read_line; 20use 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
9use anyhow::{anyhow, bail, Context, Result}; 9use anyhow::{anyhow, bail, Context, Result};
10use auth_git2::GitAuthenticator; 10use auth_git2::GitAuthenticator;
11use client::{get_events_from_cache, get_state_from_cache, send_events, sign_event, STATE_KIND}; 11use client::{
12 get_events_from_local_cache, get_state_from_cache, send_events, sign_event, STATE_KIND,
13};
12use console::Term; 14use console::Term;
13use git::{sha1_to_oid, RepoActions}; 15use git::{sha1_to_oid, RepoActions};
14use git2::{Oid, Repository}; 16use 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};
10use git2::Repository; 10use git2::Repository;
11use ngit::{ 11use 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()