use std::path::Path;
use super::naming::{ensure_missing, pascal_case, validate_module_name};
use super::write::GeneratedFile;
pub(crate) fn generate(src_root: &Path, raw_name: &str) -> Result<GeneratedFile, String> {
let name = validate_module_name(raw_name)?;
let dir = src_root.join(&name);
let mod_rs = dir.join("mod.rs");
ensure_missing(&mod_rs)?;
let content = render(&name);
Ok(GeneratedFile {
path: mod_rs,
content,
})
}
fn render(name: &str) -> String {
let pascal = pascal_case(name);
format!(
"//! The `{name}` feature module.\n\
\n\
use arcature::prelude::*;\n\
\n\
arcature::arcature_dx::module! {{\n\
\x20 pub {pascal} {{\n\
\x20 }}\n\
}}\n"
)
}