use crate::Templates::*;
use std::io::Write;
use std::path::Path;
use std::fs::create_dir;
pub fn const_conv(main: &str, structure: &str)-> (String, String) {
(main.to_string(), structure.to_string())
}
pub fn load(template: &str) -> (String, String) {
match template {
"Basic" => const_conv(basic::BASIC_MAIN, basic::BASIC_STRUCTURE),
"Code" => const_conv(code::CODE_MAIN, code::CODE_STRUCTURE),
"Math" => const_conv(math::MATH_MAIN, math::MATH_STRUCTURE),
"Theatre" => const_conv(theatre::THEATRE_MAIN, theatre::THEATRE_STRUCTURE),
"Novel" => const_conv(novel::NOVEL_MAIN, novel::NOVEL_STRUCTURE),
"Beamer" => const_conv(beamer::BEAMER_MAIN, beamer::BEAMER_STRUCTURE),
"Lachaise" => const_conv(lachaise::LACHAISE_MAIN, lachaise::LACHAISE_STRUCTURE),
_ => panic!("Unknown template: {}", template),
}
}
pub fn create(name: &str, file_path: &Option<String>, template: &str) {
let file_path = match file_path{
Some(path) => path,
None => "."
};
println!("Loading {} template...", template);
let (main, structure) = load(template);
let path = format!("{}/{}", file_path, name);
let def_path = format!("{}/{}_texcreate", file_path, name); let mut p = String::new();
if Path::new(&path).exists(){
let f = format!("Note: {} exists, creating {} instead\n", &path, &def_path);
println!("{}",f);
match create_dir(&def_path){
Ok(dir) => dir,
Err(e) => eprintln!("{}", e)
};
p = def_path;
} else {
println!("Creating {}", &path);
match create_dir(&path){
Ok(dir) => dir,
Err(e) => eprintln!("{}", e)
};
p = path;
}
println!("Creating {}/{}.tex", &p, name);
let mut main_file =
std::fs::File::create(format!("{}/{}.tex", &p, name)).expect("Couldn't create file");
match main_file.write_all(main.as_bytes()){
Ok(write) => write,
Err(e) => eprintln!("{}", e)
};
println!("Creating {}/structure.tex", &p);
let mut structure_file =
std::fs::File::create(format!("{}/structure.tex", &p)).expect("Couldn't create file");
match structure_file.write_all(structure.as_bytes()){
Ok(write) => write,
Err(e) => eprintln!("{}", e)
};
}