mlem/src/main.rs
2024-04-09 17:28:56 +02:00

61 lines
1.8 KiB
Rust

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<String> = 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<index::BlogPost> = 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();
}