use super::Format;
#[derive(Debug, Clone)]
pub struct OutputSource {
pub bytes: Option<bool>,
pub simple: Option<bool>,
pub csv: Option<bool>,
pub csv_delimiter: char,
pub csv_header: Option<bool>,
pub json: Option<bool>,
pub list: bool,
pub quiet: Option<bool>,
pub minimal: Option<bool>,
pub profile: Option<String>,
pub theme: String,
pub format: Option<Format>,
}
impl Default for OutputSource {
fn default() -> Self {
Self {
bytes: None,
simple: None,
csv: None,
csv_delimiter: ',',
csv_header: None,
json: None,
list: false,
quiet: None,
minimal: None,
profile: None,
theme: "dark".to_string(),
format: None,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct TestSource {
pub no_download: Option<bool>,
pub no_upload: Option<bool>,
pub single: Option<bool>,
}
#[derive(Debug, Clone)]
pub struct NetworkSource {
pub source: Option<String>,
pub timeout: u64,
pub ca_cert: Option<String>,
pub tls_version: Option<String>,
pub pin_certs: Option<bool>,
}
impl Default for NetworkSource {
fn default() -> Self {
Self {
source: None,
timeout: 10,
ca_cert: None,
tls_version: None,
pin_certs: None,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct ServerSource {
pub server_ids: Vec<String>,
pub exclude_ids: Vec<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ConfigSource {
pub output: OutputSource,
pub test: TestSource,
pub network: NetworkSource,
pub servers: ServerSource,
pub strict_config: Option<bool>,
}
impl ConfigSource {
#[must_use]
#[allow(deprecated)] pub(crate) fn from_args(args: &crate::cli::Args) -> Self {
Self {
output: OutputSource {
bytes: args.bytes,
simple: args.simple,
csv: args.csv,
csv_delimiter: args.csv_delimiter,
csv_header: args.csv_header,
json: args.json,
list: args.list,
quiet: args.quiet,
minimal: args.minimal,
profile: args.profile.clone(),
theme: args.theme.clone(),
format: args.format.map(Format::from_cli_type),
},
test: TestSource {
no_download: args.no_download,
no_upload: args.no_upload,
single: args.single,
},
network: NetworkSource {
source: args.source.clone(),
timeout: args.timeout,
ca_cert: args.ca_cert.clone(),
tls_version: args.tls_version.clone(),
pin_certs: args.pin_certs,
},
servers: ServerSource {
server_ids: args.server.clone(),
exclude_ids: args.exclude.clone(),
},
strict_config: args.strict_config,
}
}
}