From 2f2fe4dd921b3eb4379f9ca5e67269c190aff2da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ila=C3=AF=20Deutel?= Date: Fri, 8 May 2020 15:08:35 -0700 Subject: [PATCH] Fix serde default for updates.auto_update_interval_hours --- src/config.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/config.rs b/src/config.rs index 56e8bff..51d9b28 100644 --- a/src/config.rs +++ b/src/config.rs @@ -14,6 +14,7 @@ use crate::error::TealdeerError::{self, ConfigError}; pub const CONFIG_FILE_NAME: &str = "config.toml"; pub const MAX_CACHE_AGE: Duration = Duration::from_secs(2_592_000); // 30 days +const DEFAULT_UPDATE_INTERVAL_HOURS: u64 = MAX_CACHE_AGE.as_secs() / 3600; // 30 days fn default_underline() -> bool { false @@ -118,14 +119,30 @@ struct RawDisplayConfig { pub use_pager: bool, } -#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq)] +/// Serde doesn't support default values yet (tracking issue: +/// https://github.com/serde-rs/serde/issues/368), so we need to wrap DEFAULT_UPDATE_INTERVAL_HOURS +/// in a function to be able to use #[serde(default = ...)] +const fn default_auto_update_interval_hours() -> u64 { + DEFAULT_UPDATE_INTERVAL_HOURS +} + +#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)] struct RawUpdatesConfig { #[serde(default)] pub auto_update: bool, - #[serde(default)] + #[serde(default = "default_auto_update_interval_hours")] pub auto_update_interval_hours: u64, } +impl Default for RawUpdatesConfig { + fn default() -> Self { + Self { + auto_update: false, + auto_update_interval_hours: DEFAULT_UPDATE_INTERVAL_HOURS, + } + } +} + #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq)] struct RawConfig { #[serde(default)] @@ -146,8 +163,6 @@ impl RawConfig { raw_config.style.example_code.foreground = Some(RawColor::Cyan); raw_config.style.example_variable.foreground = Some(RawColor::Cyan); raw_config.style.example_variable.underline = true; - raw_config.display.use_pager = false; - raw_config.updates.auto_update_interval_hours = MAX_CACHE_AGE.as_secs() / 3600; raw_config }