#[macro_export]
macro_rules! export_types {
(output = $output:expr, types = [$($ty:ty),* $(,)?]) => {
{
use std::fs;
use std::path::Path;
use $crate::{GearMeshExport, TypeScriptGenerator, GeneratorConfig};
let mut types = Vec::new();
$(
types.push(<$ty as GearMeshExport>::gear_mesh_type());
)*
let config = GeneratorConfig::new();
let mut generator = TypeScriptGenerator::new(config);
let output_content = generator.generate(&types);
let output_path = Path::new($output);
if let Some(parent) = output_path.parent() {
fs::create_dir_all(parent).ok();
}
fs::write(output_path, output_content)
.expect(&format!("Failed to write TypeScript definitions to {}", $output));
println!("✅ Generated TypeScript types: {}", $output);
}
};
}