use std::collections::HashMap;
pub struct FileTemplate {
pub path: &'static str,
pub content: &'static str,
}
pub struct ProjectTemplate {
pub name: &'static str,
pub dirs: &'static [&'static str],
pub files: &'static [FileTemplate],
pub main_class: &'static str,
pub class_dir: &'static str,
}
pub fn get_templates() -> HashMap<&'static str, ProjectTemplate> {
let mut map = HashMap::new();
map.insert(
"minimal",
ProjectTemplate {
name: "minimal",
dirs: &["src", "bin"],
main_class: "Main",
class_dir: "bin",
files: &[
FileTemplate {
path: "src/Main.java",
content: "public class Main {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n}\n",
},
FileTemplate {
path: ".gitignore",
content: "bin/\n*.class\n",
},
],
},
);
map.insert(
"default",
ProjectTemplate {
name: "default",
dirs: &["src", "lib", "bin"],
main_class: "Main",
class_dir: "bin",
files: &[
FileTemplate{
path: "src/Main.java",
content: "public class Main {\n public static void main(String[] args) {\n System.out.println(\"Hello, World\");\n }\n}\n",
},
],
},
);
map.insert(
"advanced",
ProjectTemplate {
name: "advanced",
dirs: &["src/main/java", "target/classes"],
main_class: "Main",
class_dir: "target/classes",
files: &[
FileTemplate {
path: "src/main/java/Main.java",
content: "public class Main {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n}\n",
},
FileTemplate {
path: ".gitignore",
content: "target/\n*.class\n",
},
],
},
);
map
}