upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/bin/ngit
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-09-13 16:20:06 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-09-13 16:20:06 +0100
commit97743676edd19d31807574b03b2498e7ed786a63 (patch)
tree67fc6321bba7879c7b367fbaf7b8e2663e1c5b45 /src/bin/ngit
parent5e958f48e58712736e6394f15b91997ba5231e01 (diff)
fix(ngit): `pull` and `push` find pr from branch
as since `cl.get_branch_name` has been introduced branch names could be prefixed with a pr and sometimes postfixed with an event id
Diffstat (limited to 'src/bin/ngit')
-rw-r--r--src/bin/ngit/sub_commands/pull.rs19
-rw-r--r--src/bin/ngit/sub_commands/push.rs18
2 files changed, 30 insertions, 7 deletions
diff --git a/src/bin/ngit/sub_commands/pull.rs b/src/bin/ngit/sub_commands/pull.rs
index b66422d..b331dbe 100644
--- a/src/bin/ngit/sub_commands/pull.rs
+++ b/src/bin/ngit/sub_commands/pull.rs
@@ -1,4 +1,5 @@
1use anyhow::{bail, Context, Result}; 1use anyhow::{bail, Context, Result};
2use nostr_sdk::PublicKey;
2 3
3use crate::{ 4use crate::{
4 client::{ 5 client::{
@@ -32,19 +33,29 @@ pub async fn launch() -> Result<()> {
32 let client = Client::default(); 33 let client = Client::default();
33 34
34 let repo_coordinates = get_repo_coordinates(&git_repo, &client).await?; 35 let repo_coordinates = get_repo_coordinates(&git_repo, &client).await?;
35
36 fetching_with_report(git_repo_path, &client, &repo_coordinates).await?; 36 fetching_with_report(git_repo_path, &client, &repo_coordinates).await?;
37 37
38 let repo_ref = get_repo_ref_from_cache(git_repo_path, &repo_coordinates).await?; 38 let repo_ref = get_repo_ref_from_cache(git_repo_path, &repo_coordinates).await?;
39 39
40 let public_key_if_known =
41 if let Ok(Some(npub)) = git_repo.get_git_config_item("nostr.npub", None) {
42 PublicKey::parse(npub).ok()
43 } else {
44 None
45 };
46
40 let proposal_root_event = 47 let proposal_root_event =
41 get_proposals_and_revisions_from_cache(git_repo_path, repo_ref.coordinates()) 48 get_proposals_and_revisions_from_cache(git_repo_path, repo_ref.coordinates())
42 .await? 49 .await?
43 .iter() 50 .iter()
44 .find(|e| { 51 .find(|e| {
45 event_to_cover_letter(e) 52 event_to_cover_letter(e).is_ok_and(|cl| {
46 .is_ok_and(|cl| cl.get_branch_name().is_ok_and(|s| s.eq(&branch_name))) 53 cl.branch_name.eq(&branch_name)
47 && !event_is_revision_root(e) 54 || (public_key_if_known
55 .is_some_and(|public_key| e.author().eq(&public_key))
56 && branch_name.eq(&format!("pr/{}", cl.branch_name)))
57 || cl.get_branch_name().is_ok_and(|s| s.eq(&branch_name))
58 }) && !event_is_revision_root(e)
48 }) 59 })
49 .context("cannot find proposal that matches the current branch name")? 60 .context("cannot find proposal that matches the current branch name")?
50 .clone(); 61 .clone();
diff --git a/src/bin/ngit/sub_commands/push.rs b/src/bin/ngit/sub_commands/push.rs
index 79065fc..3ec6ff9 100644
--- a/src/bin/ngit/sub_commands/push.rs
+++ b/src/bin/ngit/sub_commands/push.rs
@@ -1,5 +1,6 @@
1use anyhow::{bail, Context, Result}; 1use anyhow::{bail, Context, Result};
2use ngit::{client::send_events, git_events::tag_value}; 2use ngit::{client::send_events, git_events::tag_value};
3use nostr_sdk::PublicKey;
3 4
4use crate::{ 5use crate::{
5 cli::Cli, 6 cli::Cli,
@@ -52,14 +53,25 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> {
52 53
53 let repo_ref = get_repo_ref_from_cache(git_repo_path, &repo_coordinates).await?; 54 let repo_ref = get_repo_ref_from_cache(git_repo_path, &repo_coordinates).await?;
54 55
56 let public_key_if_known =
57 if let Ok(Some(npub)) = git_repo.get_git_config_item("nostr.npub", None) {
58 PublicKey::parse(npub).ok()
59 } else {
60 None
61 };
62
55 let proposal_root_event = 63 let proposal_root_event =
56 get_proposals_and_revisions_from_cache(git_repo_path, repo_ref.coordinates()) 64 get_proposals_and_revisions_from_cache(git_repo_path, repo_ref.coordinates())
57 .await? 65 .await?
58 .iter() 66 .iter()
59 .find(|e| { 67 .find(|e| {
60 event_to_cover_letter(e) 68 event_to_cover_letter(e).is_ok_and(|cl| {
61 .is_ok_and(|cl| cl.get_branch_name().is_ok_and(|s| s.eq(&branch_name))) 69 cl.branch_name.eq(&branch_name)
62 && !event_is_revision_root(e) 70 || (public_key_if_known
71 .is_some_and(|public_key| e.author().eq(&public_key))
72 && branch_name.eq(&format!("pr/{}", cl.branch_name)))
73 || cl.get_branch_name().is_ok_and(|s| s.eq(&branch_name))
74 }) && !event_is_revision_root(e)
63 }) 75 })
64 .context("cannot find proposal that matches the current branch name")? 76 .context("cannot find proposal that matches the current branch name")?
65 .clone(); 77 .clone();