1use clap_serde_derive::ClapSerde;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Deserialize, Serialize, Eq, PartialEq, Clone, ClapSerde)]
5#[serde(default)]
6pub struct S3 {
7 #[default(false)]
8 #[arg(id = "s3-enabled", long = "s3-enabled")]
9 pub enabled: bool,
10
11 #[default(None)]
12 #[arg(id = "s3-access-key", long = "s3-access-key")]
13 pub access_key: Option<String>,
14
15 #[default(None)]
16 #[arg(id = "s3-secret-key", long = "s3-secret-key")]
17 pub secret_key: Option<String>,
18
19 #[default(None)]
20 #[arg(id = "s3-region", long = "s3-region")]
21 pub region: Option<String>,
22
23 #[default(None)]
24 #[arg(id = "s3-endpoint", long = "s3-endpoint")]
25 pub endpoint: Option<String>,
26
27 #[default(true)]
28 #[arg(id = "s3-allow-http", long = "s3-allow-http")]
29 pub allow_http: bool,
30
31 #[default("kellnr-crates".to_string())]
32 #[arg(id = "s3-crates-bucket", long = "s3-crates-bucket")]
33 pub crates_bucket: String,
34
35 #[default("kellnr-cratesio".to_string())]
36 #[arg(id = "s3-cratesio-bucket", long = "s3-cratesio-bucket")]
37 pub cratesio_bucket: String,
38
39 #[default("kellnr-toolchains".to_string())]
40 #[arg(id = "s3-toolchain-bucket", long = "s3-toolchain-bucket")]
41 pub toolchain_bucket: String,
42
43 #[default(5)]
45 #[arg(id = "s3-connect-timeout", long = "s3-connect-timeout")]
46 pub connect_timeout_seconds: u64,
47
48 #[default(30)]
50 #[arg(id = "s3-request-timeout", long = "s3-request-timeout")]
51 pub request_timeout_seconds: u64,
52}