Make sure `preferredSeeds` has a default
If the user already has a config, the preferred seeds list is not populated. We fix that here by giving it a default value.
This commit is contained in:
parent
5dbd9bb2a3
commit
0fbfbc5721
|
|
@ -373,7 +373,7 @@ fn sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect to preferred seeds in case we aren't connected.
|
// Connect to preferred seeds in case we aren't connected.
|
||||||
for seed in &config.preferred_seeds {
|
for seed in config.preferred_seeds.iter() {
|
||||||
if !sessions.iter().any(|s| s.nid == seed.id) {
|
if !sessions.iter().any(|s| s.nid == seed.id) {
|
||||||
commands::rad_node::control::connect(
|
commands::rad_node::control::connect(
|
||||||
node,
|
node,
|
||||||
|
|
@ -421,7 +421,7 @@ fn sync(
|
||||||
));
|
));
|
||||||
spinner.finish();
|
spinner.finish();
|
||||||
|
|
||||||
for seed in &config.preferred_seeds {
|
for seed in config.preferred_seeds.iter() {
|
||||||
if replicas.contains(&seed.id) {
|
if replicas.contains(&seed.id) {
|
||||||
return Ok(SyncResult::Synced {
|
return Ok(SyncResult::Synced {
|
||||||
result: Some(config.public_explorer.url(seed.addr.host.to_string(), rid)),
|
result: Some(config.public_explorer.url(seed.addr.host.to_string(), rid)),
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ use radicle::node::Handle as _;
|
||||||
use radicle::node::{Alias, DEFAULT_TIMEOUT};
|
use radicle::node::{Alias, DEFAULT_TIMEOUT};
|
||||||
use radicle::prelude::Id;
|
use radicle::prelude::Id;
|
||||||
use radicle::profile;
|
use radicle::profile;
|
||||||
use radicle::profile::Home;
|
use radicle::profile::{Home, PreferredSeeds};
|
||||||
use radicle::storage::{ReadStorage, RemoteRepository};
|
use radicle::storage::{ReadStorage, RemoteRepository};
|
||||||
use radicle::test::fixtures;
|
use radicle::test::fixtures;
|
||||||
|
|
||||||
|
|
@ -1213,7 +1213,7 @@ fn rad_init_sync_preferred() {
|
||||||
.spawn();
|
.spawn();
|
||||||
|
|
||||||
let bob = environment.profile(profile::Config {
|
let bob = environment.profile(profile::Config {
|
||||||
preferred_seeds: vec![alice.address()],
|
preferred_seeds: PreferredSeeds::from(vec![alice.address()]),
|
||||||
..config::profile("bob")
|
..config::profile("bob")
|
||||||
});
|
});
|
||||||
let mut bob = Node::new(bob).spawn();
|
let mut bob = Node::new(bob).spawn();
|
||||||
|
|
@ -1245,7 +1245,7 @@ fn rad_init_sync_timeout() {
|
||||||
.spawn();
|
.spawn();
|
||||||
|
|
||||||
let bob = environment.profile(profile::Config {
|
let bob = environment.profile(profile::Config {
|
||||||
preferred_seeds: vec![alice.address()],
|
preferred_seeds: PreferredSeeds::from(vec![alice.address()]),
|
||||||
..config::profile("bob")
|
..config::profile("bob")
|
||||||
});
|
});
|
||||||
let mut bob = Node::new(bob).spawn();
|
let mut bob = Node::new(bob).spawn();
|
||||||
|
|
@ -1821,7 +1821,7 @@ fn rad_patch_open_explore() {
|
||||||
.spawn();
|
.spawn();
|
||||||
|
|
||||||
let bob = environment.profile(profile::Config {
|
let bob = environment.profile(profile::Config {
|
||||||
preferred_seeds: vec![seed.address()],
|
preferred_seeds: PreferredSeeds::from(vec![seed.address()]),
|
||||||
..config::profile("bob")
|
..config::profile("bob")
|
||||||
});
|
});
|
||||||
let mut bob = Node::new(bob).spawn();
|
let mut bob = Node::new(bob).spawn();
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,7 @@ use radicle::node::Database;
|
||||||
use radicle::node::{Alias, POLICIES_DB_FILE};
|
use radicle::node::{Alias, POLICIES_DB_FILE};
|
||||||
use radicle::node::{ConnectOptions, Handle as _};
|
use radicle::node::{ConnectOptions, Handle as _};
|
||||||
use radicle::profile;
|
use radicle::profile;
|
||||||
use radicle::profile::Home;
|
use radicle::profile::{Home, PreferredSeeds, Profile};
|
||||||
use radicle::profile::Profile;
|
|
||||||
use radicle::rad;
|
use radicle::rad;
|
||||||
use radicle::storage::{ReadStorage as _, RemoteRepository as _, SignRepository as _};
|
use radicle::storage::{ReadStorage as _, RemoteRepository as _, SignRepository as _};
|
||||||
use radicle::test::fixtures;
|
use radicle::test::fixtures;
|
||||||
|
|
@ -92,7 +91,7 @@ impl Environment {
|
||||||
node: node::Config::test(alias),
|
node: node::Config::test(alias),
|
||||||
cli: cli::Config { hints: false },
|
cli: cli::Config { hints: false },
|
||||||
public_explorer: explorer::Explorer::default(),
|
public_explorer: explorer::Explorer::default(),
|
||||||
preferred_seeds: vec![],
|
preferred_seeds: PreferredSeeds::from(vec![]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -672,7 +672,7 @@ fn sync(
|
||||||
}
|
}
|
||||||
let mut urls = Vec::new();
|
let mut urls = Vec::new();
|
||||||
|
|
||||||
for seed in &profile.config.preferred_seeds {
|
for seed in profile.config.preferred_seeds.iter() {
|
||||||
if replicated.contains(&seed.id) {
|
if replicated.contains(&seed.id) {
|
||||||
for resource in updated {
|
for resource in updated {
|
||||||
let url = profile
|
let url = profile
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ use std::io::Write;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::{fs, io, str::FromStr};
|
use std::{fs, io, str::FromStr};
|
||||||
|
|
||||||
use serde::Serialize;
|
use serde::{Deserialize, Serialize};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
use crate::crypto::ssh::agent::Agent;
|
use crate::crypto::ssh::agent::Agent;
|
||||||
|
|
@ -122,7 +122,7 @@ pub struct Config {
|
||||||
/// Preferred seeds. These seeds will be used for explorer links
|
/// Preferred seeds. These seeds will be used for explorer links
|
||||||
/// and in other situations when a seed needs to be chosen.
|
/// and in other situations when a seed needs to be chosen.
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub preferred_seeds: Vec<node::config::ConnectAddress>,
|
pub preferred_seeds: PreferredSeeds,
|
||||||
/// CLI configuration.
|
/// CLI configuration.
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub cli: cli::Config,
|
pub cli: cli::Config,
|
||||||
|
|
@ -135,7 +135,7 @@ impl Config {
|
||||||
pub fn new(alias: Alias) -> Self {
|
pub fn new(alias: Alias) -> Self {
|
||||||
Self {
|
Self {
|
||||||
public_explorer: Explorer::default(),
|
public_explorer: Explorer::default(),
|
||||||
preferred_seeds: vec![node::config::seeds::RADICLE_COMMUNITY_NODE.clone()],
|
preferred_seeds: PreferredSeeds::default(),
|
||||||
cli: cli::Config::default(),
|
cli: cli::Config::default(),
|
||||||
node: node::Config::new(alias),
|
node: node::Config::new(alias),
|
||||||
}
|
}
|
||||||
|
|
@ -189,6 +189,30 @@ impl Config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
#[serde(transparent)]
|
||||||
|
pub struct PreferredSeeds(Vec<node::config::ConnectAddress>);
|
||||||
|
|
||||||
|
impl From<Vec<node::config::ConnectAddress>> for PreferredSeeds {
|
||||||
|
fn from(value: Vec<node::config::ConnectAddress>) -> Self {
|
||||||
|
Self(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for PreferredSeeds {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self(vec![node::config::seeds::RADICLE_COMMUNITY_NODE.clone()])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::ops::Deref for PreferredSeeds {
|
||||||
|
type Target = Vec<node::config::ConnectAddress>;
|
||||||
|
|
||||||
|
fn deref(&self) -> &Self::Target {
|
||||||
|
&self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Profile {
|
pub struct Profile {
|
||||||
pub home: Home,
|
pub home: Home,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue