From d64748b810bf64638a5eb71eac054d91dae0c0f1 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 21 May 2025 12:32:41 +0100 Subject: feat: add support for default relay overrides via git config so they can be overwritten locally and globally --- src/lib/client.rs | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'src/lib/client.rs') diff --git a/src/lib/client.rs b/src/lib/client.rs index 6c6d81e..7cd3c46 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs @@ -44,7 +44,7 @@ use nostr_sdk::{ use crate::{ get_dirs, - git::{Repo, RepoActions}, + git::{Repo, RepoActions, get_git_config_item}, git_events::{ event_is_cover_letter, event_is_patch_set_root, event_is_revision_root, status_kinds, }, @@ -659,6 +659,46 @@ impl Default for Params { } } } +impl Params { + pub fn with_git_config_relay_defaults(git_repo: &Option<&Repo>) -> Self { + let mut params = Params::default(); + if std::env::var("NGITTEST").is_err() { + // ignore git config settings under test + if let Ok(Some(relay_defaults)) = + get_git_config_item(git_repo, "nostr.relay-default-set") + { + let new_default_relays: Vec = relay_defaults + .split(';') + .filter_map(|url| RelayUrl::parse(url).ok()) // Attempt to parse and filter out errors + .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String + .collect(); + // elsewhere it is assumed this isn't empty + if !new_default_relays.is_empty() { + params.fallback_relays = new_default_relays; + } + } + if let Ok(Some(relay_blasters)) = + get_git_config_item(git_repo, "nostr.relay-blaster-set") + { + params.blaster_relays = relay_blasters + .split(';') + .filter_map(|url| RelayUrl::parse(url).ok()) // Attempt to parse and filter out errors + .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String + .collect(); + } + if let Ok(Some(relay_signer)) = + get_git_config_item(git_repo, "nostr.relay-signer-fallback-set") + { + params.fallback_signer_relays = relay_signer + .split(';') + .filter_map(|url| RelayUrl::parse(url).ok()) // Attempt to parse and filter out errors + .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String + .collect(); + } + } + params + } +} fn get_dedup_events(relay_results: Vec>>) -> Vec { let mut dedup_events: Vec = vec![]; -- cgit v1.2.3