The website generator used to generate the webpage at teasca.de, but can be used to generate any webpage with any content.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

120 lines
3.0 KiB

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<NavbarConfig>,
#[serde(rename = "resource")]
pub resources: Option<HashMap<String, ResourceConfig>>,
pub twitter: Option<TwitterConfig>,
pub google: Option<GoogleConfig>,
}
#[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<String>,
pub use_default_css: bool,
pub use_default_js: bool,
pub javascript: Vec<String>,
pub css: Vec<String>,
pub favicon: Option<String>,
pub before_navbar_url: Option<String>,
pub before_content_url: Option<String>,
pub after_content_url: Option<String>,
pub mobile_viewport: Option<bool>,
pub meta_description: Option<bool>,
pub charset: Option<String>,
pub meta_og: Option<bool>,
pub output: Option<String>,
}
#[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<String>,
#[serde(rename = "item")]
pub item_map: HashMap<String, NavbarItem>,
}
#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct NavbarItem {
pub title: String,
pub link: String,
pub image_url: Option<String>,
}
impl GlobalConfigToml {
pub fn get_config() -> Result<GlobalConfigToml, Error> {
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<PageConfigToml, Error> {
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<String>,
pub before_navbar_url: Option<String>,
pub before_content_url: Option<String>,
pub after_content_url: Option<String>,
pub javascript: Option<Vec<String>>,
pub css: Option<Vec<String>>,
}
#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct InjectionToml {
pub meta: MetaInjectionToml,
pub list: HashMap<String, HashMap<String, String>>,
}
#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct MetaInjectionToml {
pub rendered: Vec<String>,
pub template: String,
pub list_classes: String,
pub is_list: bool,
}
impl InjectionToml {
pub fn get_from(path: &PathBuf) -> Result<InjectionToml, Error> {
file_writer::get_toml(path)
}
}