diff options
Diffstat (limited to 'src/lib/repo_ref.rs')
| -rw-r--r-- | src/lib/repo_ref.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/lib/repo_ref.rs b/src/lib/repo_ref.rs index 69fbe64..988c87d 100644 --- a/src/lib/repo_ref.rs +++ b/src/lib/repo_ref.rs | |||
| @@ -188,6 +188,13 @@ impl RepoRef { | |||
| 188 | /// coordinates without relay hints | 188 | /// coordinates without relay hints |
| 189 | pub fn coordinates(&self) -> HashSet<Coordinate> { | 189 | pub fn coordinates(&self) -> HashSet<Coordinate> { |
| 190 | let mut res = HashSet::new(); | 190 | let mut res = HashSet::new(); |
| 191 | res.insert(Coordinate { | ||
| 192 | kind: Kind::GitRepoAnnouncement, | ||
| 193 | public_key: self.trusted_maintainer, | ||
| 194 | identifier: self.identifier.clone(), | ||
| 195 | relays: vec![], | ||
| 196 | }); | ||
| 197 | |||
| 191 | for m in &self.maintainers { | 198 | for m in &self.maintainers { |
| 192 | res.insert(Coordinate { | 199 | res.insert(Coordinate { |
| 193 | kind: Kind::GitRepoAnnouncement, | 200 | kind: Kind::GitRepoAnnouncement, |
| @@ -226,7 +233,7 @@ impl RepoRef { | |||
| 226 | "{}", | 233 | "{}", |
| 227 | NostrUrlDecoded { | 234 | NostrUrlDecoded { |
| 228 | original_string: String::new(), | 235 | original_string: String::new(), |
| 229 | coordinates: HashSet::from_iter(vec![self.coordinate_with_hint()]), | 236 | coordinate: self.coordinate_with_hint(), |
| 230 | protocol: None, | 237 | protocol: None, |
| 231 | user: None, | 238 | user: None, |
| 232 | } | 239 | } |
| @@ -238,7 +245,7 @@ pub async fn get_repo_coordinates( | |||
| 238 | git_repo: &Repo, | 245 | git_repo: &Repo, |
| 239 | #[cfg(test)] client: &crate::client::MockConnect, | 246 | #[cfg(test)] client: &crate::client::MockConnect, |
| 240 | #[cfg(not(test))] client: &Client, | 247 | #[cfg(not(test))] client: &Client, |
| 241 | ) -> Result<HashSet<Coordinate>> { | 248 | ) -> Result<Coordinate> { |
| 242 | try_and_get_repo_coordinates(git_repo, client, true).await | 249 | try_and_get_repo_coordinates(git_repo, client, true).await |
| 243 | } | 250 | } |
| 244 | 251 | ||
| @@ -247,7 +254,7 @@ pub async fn try_and_get_repo_coordinates( | |||
| 247 | #[cfg(test)] client: &crate::client::MockConnect, | 254 | #[cfg(test)] client: &crate::client::MockConnect, |
| 248 | #[cfg(not(test))] client: &Client, | 255 | #[cfg(not(test))] client: &Client, |
| 249 | prompt_user: bool, | 256 | prompt_user: bool, |
| 250 | ) -> Result<HashSet<Coordinate>> { | 257 | ) -> Result<Coordinate> { |
| 251 | let mut repo_coordinates = get_repo_coordinates_from_git_config(git_repo)?; | 258 | let mut repo_coordinates = get_repo_coordinates_from_git_config(git_repo)?; |
| 252 | 259 | ||
| 253 | if repo_coordinates.is_empty() { | 260 | if repo_coordinates.is_empty() { |
| @@ -265,7 +272,11 @@ pub async fn try_and_get_repo_coordinates( | |||
| 265 | bail!("couldn't find repo coordinates in git config nostr.repo or in maintainers.yaml"); | 272 | bail!("couldn't find repo coordinates in git config nostr.repo or in maintainers.yaml"); |
| 266 | } | 273 | } |
| 267 | } | 274 | } |
| 268 | Ok(repo_coordinates) | 275 | Ok(repo_coordinates |
| 276 | .iter() | ||
| 277 | .next() | ||
| 278 | .context("would have bailed if no coordinates found")? | ||
| 279 | .clone()) | ||
| 269 | } | 280 | } |
| 270 | 281 | ||
| 271 | fn get_repo_coordinates_from_git_config(git_repo: &Repo) -> Result<HashSet<Coordinate>> { | 282 | fn get_repo_coordinates_from_git_config(git_repo: &Repo) -> Result<HashSet<Coordinate>> { |
| @@ -285,9 +296,7 @@ fn get_repo_coordinates_from_nostr_remotes(git_repo: &Repo) -> Result<HashSet<Co | |||
| 285 | for remote_name in git_repo.git_repo.remotes()?.iter().flatten() { | 296 | for remote_name in git_repo.git_repo.remotes()?.iter().flatten() { |
| 286 | if let Some(remote_url) = git_repo.git_repo.find_remote(remote_name)?.url() { | 297 | if let Some(remote_url) = git_repo.git_repo.find_remote(remote_name)?.url() { |
| 287 | if let Ok(nostr_url_decoded) = NostrUrlDecoded::from_str(remote_url) { | 298 | if let Ok(nostr_url_decoded) = NostrUrlDecoded::from_str(remote_url) { |
| 288 | for c in nostr_url_decoded.coordinates { | 299 | repo_coordinates.insert(nostr_url_decoded.coordinate); |
| 289 | repo_coordinates.insert(c); | ||
| 290 | } | ||
| 291 | } | 300 | } |
| 292 | } | 301 | } |
| 293 | } | 302 | } |