69 lines
2.2 KiB
Rust
69 lines
2.2 KiB
Rust
extern crate pulldown_cmark;
|
|
extern crate regex;
|
|
#[macro_use]
|
|
extern crate serde_derive;
|
|
extern crate toml;
|
|
|
|
mod config_toml;
|
|
mod config;
|
|
mod template;
|
|
mod renderer;
|
|
|
|
use config::Config;
|
|
use template::Template;
|
|
|
|
use std::error::Error;
|
|
use std::fs::{create_dir_all, File};
|
|
use std::io::prelude::*;
|
|
|
|
const DEFAULT_CSS: &'static str = include_str!("templates/default-css.css");
|
|
const PAGE_TEMPLATE: &'static str = include_str!("templates/page-template.html");
|
|
const NAVBAR_ITEM: &'static str = include_str!("templates/navbar/item-template.html");
|
|
const NAVBAR_IMAGE_ITEM: &'static str = include_str!("templates/navbar/image-item-template.html");
|
|
|
|
fn main() {
|
|
println!("Fetching configs");
|
|
let config = match Config::new() {
|
|
Ok(config) => config,
|
|
Err(err) => panic!(err.description().to_owned()),
|
|
};
|
|
|
|
if config.global_config.website.use_default_css {
|
|
println!("Adding public/css/default.css");
|
|
create_dir_all("public/css").ok();
|
|
let mut file = File::create("public/css/default.css").unwrap();
|
|
file.write_all(DEFAULT_CSS.as_bytes()).ok();
|
|
}
|
|
|
|
println!("Generating page templates");
|
|
let page_template = Template::new(PAGE_TEMPLATE);
|
|
|
|
let mut navbar_content = String::new();
|
|
if config.global_config.navbar.is_some() {
|
|
let navbar_item_template = Template::new(NAVBAR_ITEM);
|
|
let navbar_image_item_template = Template::new(NAVBAR_IMAGE_ITEM);
|
|
println!("Rendering navbar");
|
|
match renderer::render_navbar(&config, navbar_item_template, navbar_image_item_template) {
|
|
Ok(navbar) => navbar_content = navbar,
|
|
Err(err) => panic!(err),
|
|
}
|
|
}
|
|
|
|
println!("Rendering public/test.html");
|
|
let rendered = match config.get_configs_for(0) {
|
|
Ok(page_config) => page_template.render(&Template::page_data_from(
|
|
page_config.clone(),
|
|
navbar_content,
|
|
renderer::render_markdown_content(&page_config).unwrap(),
|
|
)),
|
|
Err(err) => panic!(err),
|
|
};
|
|
|
|
println!("Writing public/test.html");
|
|
create_dir_all("public").ok();
|
|
let mut file = File::create("public/test.html").unwrap();
|
|
file.write_all(rendered.as_bytes()).ok();
|
|
|
|
println!("Done!");
|
|
}
|