Skip to main content

kellnr_settings/
s3.rs

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    /// S3 connect timeout in seconds
44    #[default(5)]
45    #[arg(id = "s3-connect-timeout", long = "s3-connect-timeout")]
46    pub connect_timeout_seconds: u64,
47
48    /// S3 request timeout in seconds
49    #[default(30)]
50    #[arg(id = "s3-request-timeout", long = "s3-request-timeout")]
51    pub request_timeout_seconds: u64,
52}