use serde::{Deserialize, Serialize};
#[rustfmt::skip]
pub(super)mod defaults {
#[inline] pub(super) fn site_url() -> String { "".into() }
#[inline] pub(super) fn site_name() -> String { "My site".into() }
#[inline] pub(super) fn site_motto() -> String { "Taxation is theft".into() }
#[inline] pub(super) fn footer_note() -> String { "Trump 2020".into() }
#[inline] pub(super) fn media_dir() -> String { "media".into() }
#[inline] pub(super) fn build_dir() -> String { "public".into() }
#[inline] pub(super) fn theme() -> String { "simple".into() }
#[inline] pub(super) fn theme_root_dir() -> String { "themes".into() }
#[inline] pub(super) fn rebuild_interval() -> u8 { 2 }
#[inline] pub(super) fn posts_per_page() -> usize { 999 }
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Settings {
#[serde(default = "defaults::site_url")]
pub site_url: String,
#[serde(default = "defaults::site_name")]
pub site_name: String,
#[serde(default = "defaults::site_motto")]
pub site_motto: String,
#[serde(default = "defaults::footer_note")]
pub footer_note: String,
#[serde(default = "defaults::media_dir")]
pub media_dir: String,
#[serde(default = "defaults::build_dir")]
pub build_dir: String,
#[serde(default = "defaults::theme")]
pub theme: String,
#[serde(default = "defaults::theme_root_dir")]
pub theme_root_dir: String,
#[serde(default = "defaults::rebuild_interval")]
pub rebuild_interval: u8,
#[serde(default = "defaults::posts_per_page")]
pub posts_per_page: usize,
}
impl Default for Settings {
fn default() -> Self {
return Settings {
site_url: defaults::site_url(),
site_name: defaults::site_name(),
site_motto: defaults::site_motto(),
footer_note: defaults::footer_note(),
media_dir: defaults::media_dir(),
build_dir: defaults::build_dir(),
theme: defaults::theme(),
theme_root_dir: defaults::theme_root_dir(),
rebuild_interval: defaults::rebuild_interval(),
posts_per_page: defaults::posts_per_page(),
};
}
}