upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/bin/ngit/sub_commands/push.rs
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/sub_commands/push.rs
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/sub_commands/push.rs')
-rw-r--r--src/bin/ngit/sub_commands/push.rs18
1 files changed, 15 insertions, 3 deletions
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();