ruskit/framework/typescript.rs
1use std::fs;
2use ts_rs::ExportError;
3
4pub struct TsExporter {
5 pub export_fn: fn() -> Result<String, ExportError>,
6}
7
8inventory::collect!(TsExporter);
9
10pub fn export_all_types(output_file: &str) -> Result<(), ExportError> {
11 let types: Vec<String> = inventory::iter::<TsExporter>
12 .into_iter()
13 .filter_map(|exporter| (exporter.export_fn)().ok())
14 .collect();
15
16 fs::write(output_file, types.join("\n"))?;
17 Ok(())
18}