Ensure that every section-level config type has a builder() function.
This commit is contained in:
parent
0372d24eed
commit
aa83a5e38a
|
@ -123,6 +123,7 @@ version = "0.0.1"
|
|||
dependencies = [
|
||||
"arti-client",
|
||||
"config",
|
||||
"derive_builder",
|
||||
"once_cell",
|
||||
"regex",
|
||||
"serde",
|
||||
|
|
|
@ -53,6 +53,13 @@ impl Default for ClientAddrConfig {
|
|||
}
|
||||
}
|
||||
|
||||
impl ClientAddrConfig {
|
||||
/// Return a new [`ClientAddrConfigBuilder`].
|
||||
pub fn builder() -> ClientAddrConfigBuilder {
|
||||
ClientAddrConfigBuilder::default()
|
||||
}
|
||||
}
|
||||
|
||||
/// Configuration for where information should be stored on disk.
|
||||
///
|
||||
/// This section is for read/write storage.
|
||||
|
|
|
@ -19,6 +19,7 @@ serde = { version = "1.0.124", features = ["derive"] }
|
|||
toml = "0.5.8"
|
||||
regex = { version = "1.5.3", default-features = false, features = ["std"] }
|
||||
thiserror = "1.0.24"
|
||||
derive_builder = "0.10.2"
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.2.0"
|
||||
|
|
|
@ -4,6 +4,7 @@ use arti_client::config::{
|
|||
dir::{DownloadScheduleConfig, NetworkConfig},
|
||||
StorageConfig, TorClientConfig,
|
||||
};
|
||||
use derive_builder::Builder;
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
use tor_config::ConfigBuildError;
|
||||
|
@ -12,9 +13,10 @@ use tor_config::ConfigBuildError;
|
|||
pub(crate) const ARTI_DEFAULTS: &str = concat!(include_str!("./arti_defaults.toml"),);
|
||||
|
||||
/// Structure to hold our logging configuration options
|
||||
#[derive(Deserialize, Debug, Clone)]
|
||||
#[derive(Deserialize, Debug, Clone, Builder)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[non_exhaustive] // TODO(nickm) remove public elements when I revise this.
|
||||
#[builder(build_fn(error = "ConfigBuildError"))]
|
||||
pub struct LoggingConfig {
|
||||
/// Filtering directives that determine tracing levels as described at
|
||||
/// <https://docs.rs/tracing-subscriber/0.2.20/tracing_subscriber/filter/struct.EnvFilter.html>
|
||||
|
@ -30,9 +32,17 @@ pub struct LoggingConfig {
|
|||
pub journald: bool,
|
||||
}
|
||||
|
||||
impl LoggingConfig {
|
||||
/// Return a new LoggingConfigBuilder
|
||||
pub fn builder() -> LoggingConfigBuilder {
|
||||
LoggingConfigBuilder::default()
|
||||
}
|
||||
}
|
||||
|
||||
/// Configuration for one or more proxy listeners.
|
||||
#[derive(Deserialize, Debug, Clone)]
|
||||
#[derive(Deserialize, Debug, Clone, Builder)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
#[builder(build_fn(error = "ConfigBuildError"))]
|
||||
pub struct ProxyConfig {
|
||||
/// Port to listen on (at localhost) for incoming SOCKS
|
||||
/// connections.
|
||||
|
@ -40,6 +50,11 @@ pub struct ProxyConfig {
|
|||
}
|
||||
|
||||
impl ProxyConfig {
|
||||
/// Return a new [`ProxyConfigBuilder`].
|
||||
pub fn builder() -> ProxyConfigBuilder {
|
||||
ProxyConfigBuilder::default()
|
||||
}
|
||||
|
||||
/// Return the configured SOCKS port for this proxy configuration,
|
||||
/// if one is enabled.
|
||||
pub fn socks_port(&self) -> Option<u16> {
|
||||
|
|
|
@ -45,6 +45,10 @@ fn ipv6_prefix_default() -> u8 {
|
|||
}
|
||||
|
||||
impl PathConfig {
|
||||
/// Return a new [`PathConfigBuilder`].
|
||||
pub fn builder(&self) -> PathConfigBuilder {
|
||||
PathConfigBuilder::default()
|
||||
}
|
||||
/// Return a subnet configuration based on these rules.
|
||||
pub fn subnet_config(&self) -> tor_netdir::SubnetConfig {
|
||||
tor_netdir::SubnetConfig::new(
|
||||
|
@ -106,6 +110,13 @@ impl Default for CircuitTiming {
|
|||
}
|
||||
}
|
||||
|
||||
impl CircuitTiming {
|
||||
/// Return a new [`CircuitTimingBuilder`]
|
||||
pub fn builder() -> CircuitTimingBuilder {
|
||||
CircuitTimingBuilder::default()
|
||||
}
|
||||
}
|
||||
|
||||
/// Configuration for a circuit manager.
|
||||
///
|
||||
/// This configuration includes information about how to build paths
|
||||
|
@ -128,3 +139,10 @@ pub struct CircMgrConfig {
|
|||
#[builder(default)]
|
||||
pub(crate) circuit_timing: CircuitTiming,
|
||||
}
|
||||
|
||||
impl CircMgrConfig {
|
||||
/// Return a new [CircMgrConfigBuiler`].
|
||||
pub fn builder() -> CircMgrConfigBuilder {
|
||||
CircMgrConfigBuilder::default()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue