use clap_serde_derive::ClapSerde;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, Eq, PartialEq, Clone, ClapSerde)]
#[serde(default)]
pub struct S3 {
#[default(false)]
#[arg(id = "s3-enabled", long = "s3-enabled")]
pub enabled: bool,
#[default(None)]
#[arg(id = "s3-access-key", long = "s3-access-key")]
pub access_key: Option<String>,
#[default(None)]
#[arg(id = "s3-secret-key", long = "s3-secret-key")]
pub secret_key: Option<String>,
#[default(None)]
#[arg(id = "s3-region", long = "s3-region")]
pub region: Option<String>,
#[default(None)]
#[arg(id = "s3-endpoint", long = "s3-endpoint")]
pub endpoint: Option<String>,
#[default(true)]
#[arg(id = "s3-allow-http", long = "s3-allow-http")]
pub allow_http: bool,
#[default("kellnr-crates".to_string())]
#[arg(id = "s3-crates-bucket", long = "s3-crates-bucket")]
pub crates_bucket: String,
#[default("kellnr-cratesio".to_string())]
#[arg(id = "s3-cratesio-bucket", long = "s3-cratesio-bucket")]
pub cratesio_bucket: String,
#[default("kellnr-toolchains".to_string())]
#[arg(id = "s3-toolchain-bucket", long = "s3-toolchain-bucket")]
pub toolchain_bucket: String,
#[default(5)]
#[arg(id = "s3-connect-timeout", long = "s3-connect-timeout")]
pub connect_timeout_seconds: u64,
#[default(30)]
#[arg(id = "s3-request-timeout", long = "s3-request-timeout")]
pub request_timeout_seconds: u64,
}