diff --git a/src/config.rs b/src/config.rs index 8bc224d..2f0e210 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,7 +1,7 @@ -use serde::Deserialize; +use serde::{Deserialize,Serialize}; use std::fs::read_to_string; -#[derive(Deserialize)] +#[derive(Deserialize,Serialize,Debug)] pub struct Config { pub output_dir: String, pub src_dir: String, @@ -9,11 +9,17 @@ pub struct Config { pub emoji_config: Option, } -#[derive(Deserialize)] +#[derive(Deserialize,Serialize,Debug)] pub struct EmojiConfig { pub emoji_web_directory: String, pub emoji_local_directory: String, } + +impl Default for Config { + fn default() -> Self { + Config { output_dir: "output".to_string() , src_dir: "md_src".to_string(), templates_dir: "templates".to_string(), emoji_config: None } + } +} pub fn read_config() -> Config { let config_string = read_to_string("mlem.toml").expect("mlem.toml config not found"); toml::from_str(&config_string).unwrap() diff --git a/src/main.rs b/src/main.rs index 5f77294..fd6badd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,8 +3,22 @@ pub mod config; pub mod emoji; pub mod index; use mlem::*; +use std::env; -fn main() { +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(); @@ -36,3 +50,14 @@ fn main() { 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(); +}