Skip to main content

kellnr_settings/
toolchain.rs

1use provcfg::{ClapArgs, Configurable};
2use serde::{Deserialize, Serialize};
3use utoipa::ToSchema;
4
5#[derive(Debug, Deserialize, Serialize, Eq, PartialEq, Clone, Configurable, ClapArgs, ToSchema)]
6#[serde(default)]
7#[configurable(clap_prefix = "toolchain")]
8pub struct Toolchain {
9    /// Enable toolchain distribution server
10    pub enabled: bool,
11
12    /// Max toolchain archive size in MB
13    pub max_size: usize,
14}
15
16impl Default for Toolchain {
17    fn default() -> Self {
18        Self {
19            enabled: false,
20            max_size: 500,
21        }
22    }
23}
24
25impl Toolchain {
26    /// `max_size` in bytes.
27    pub fn max_bytes(&self) -> usize {
28        crate::registry::mb_to_bytes(self.max_size)
29    }
30}
31
32#[cfg(test)]
33mod tests {
34    use super::*;
35
36    #[test]
37    fn max_bytes_saturates() {
38        let mut toolchain = Toolchain::default();
39        assert_eq!(toolchain.max_bytes(), 500_000_000);
40        toolchain.max_size = usize::MAX;
41        assert_eq!(toolchain.max_bytes(), usize::MAX);
42    }
43}