use std::path::PathBuf; use std::collections::HashMap; use error::Error; use file_writer; #[derive(Deserialize, Serialize, Clone, Debug)] pub struct GlobalConfigToml { pub website: WebsiteConfig, pub navbar: Option, #[serde(rename = "resource")] pub resources: Option>, pub twitter: Option, pub google: Option, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct ResourceConfig { pub source: String, pub destination: String, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct WebsiteConfig { pub website_name: String, pub built_pages: Vec, pub use_default_css: bool, pub use_default_js: bool, pub javascript: Vec, pub css: Vec, pub favicon: Option, pub before_navbar_url: Option, pub before_content_url: Option, pub after_content_url: Option, pub mobile_viewport: Option, pub meta_description: Option, pub charset: Option, pub meta_og: Option, pub output: Option, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct GoogleConfig { pub google_robots: String, pub google_site_verification: String, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct TwitterConfig { pub twitter_site: String, pub twitter_creator: String, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct NavbarConfig { pub items: Vec, #[serde(rename = "item")] pub item_map: HashMap, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct NavbarItem { pub title: String, pub link: String, pub image_url: Option, } impl GlobalConfigToml { pub fn get_config() -> Result { file_writer::get_toml(&PathBuf::from("config.toml")) } } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct PageConfigToml { pub page: PageConfig, } impl PageConfigToml { pub fn get_from(path: &PathBuf) -> Result { file_writer::get_toml(path) } } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct PageConfig { pub html_path: String, pub title: String, pub description: String, pub content_path: String, pub favicon: Option, pub before_navbar_url: Option, pub before_content_url: Option, pub after_content_url: Option, pub javascript: Option>, pub css: Option>, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct InjectionToml { pub meta: MetaInjectionToml, pub list: HashMap>, } #[derive(Deserialize, Serialize, Clone, Debug)] pub struct MetaInjectionToml { pub rendered: Vec, pub template: String, pub list_classes: String, pub is_list: bool, } impl InjectionToml { pub fn get_from(path: &PathBuf) -> Result { file_writer::get_toml(path) } }