use std::fs::read_to_string; pub mod config; pub mod emoji; pub mod index; use mlem::*; use std::env; fn main() { let args: Vec = env::args().collect(); if args.len() == 1 { generate(); } else if args[1] == "create" { create_default_env() } else { eprintln!("Option not recognized"); std::process::exit(1); } } fn generate() { let config = config::read_config(); let raw_files = read_src_files(&config.src_dir); let mut post_index: Vec = Vec::new(); for file in raw_files { let mut markdown = read_to_string(file.path).expect("File does not exist"); markdown = emoji::emoji_pass(&markdown, &config.emoji_config); let (html, index_content) = generate_blog_entry(markdown, &config.templates_dir); write_to_fs( html, &config.output_dir, &file.file_name.clone().into_string().unwrap(), ); post_index.push(index::BlogPost::new( file.title, file.date.format("%Y-%m-%d").to_string(), file.date.timestamp(), index_content, format!("{}.html", file.file_name.to_str().unwrap()), )); } let index = index::generate(post_index, &config.templates_dir); std::fs::write(format!("{}/index.html", config.output_dir), index) .unwrap_or_else(|_| panic!("Error writing index")); } fn create_default_env() { println!("Writing a default mlem.toml"); let config = config::Config::default(); let toml_config = toml::to_string(&config).unwrap(); std::fs::write("mlem.toml", toml_config).unwrap(); println!("Creating default directorys"); std::fs::create_dir(config.output_dir).unwrap(); std::fs::create_dir(config.src_dir).unwrap(); std::fs::create_dir(config.templates_dir).unwrap(); }