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