use crate::ModuleGradle;
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Debug, PartialEq)]
#[serde(bound(deserialize = "'de: 'a"))]
pub struct Module<'a> {
pub gradle : ModuleGradle<'a>,
}
impl<'a> Module<'a> {
pub fn new(gradle: ModuleGradle<'a>) -> Self {
Module { gradle }
}
}
#[cfg(feature = "generate")]
impl crate::Generate for Module<'_> {
fn generate(&self,directory : &str) {
let module_directory = format!("{}\\{}\\src", directory,self.gradle.metadata.module_name);
crate::create_directory(&module_directory);
let namespace = self.gradle.metadata.namespace;
let joined_path = |name : &str| -> String {
format!("{}\\{}",name,namespace)
};
match &self.gradle.module_content {
crate::ModuleContent::Dependencies(_) => {
crate::create_nested_directory(&joined_path("main"));
},
crate::ModuleContent::SourceSets(source_sets) => {
for set in source_sets.as_list() {
crate::create_nested_directory(&joined_path(set.name));
}
}
}
}
}