pub mod parser;
pub mod codegen;
pub mod config;
pub use parser::parse;
use std::path::Path;
pub fn generate_all(ui_dir: &Path, out_file: &Path) {
let mut output = String::new();
output.push_str("// Generated by fncc-core. Do not edit.\n\n");
let entries = std::fs::read_dir(ui_dir).expect("failed to read ui dir");
for entry in entries {
let entry = entry.expect("failed to read entry");
let path = entry.path();
if path.extension().is_some_and(|ext| ext == "fui") {
let source = std::fs::read_to_string(&path)
.expect(&format!("failed to read {:?}", path));
let ast = parser::parse(&source)
.expect(&format!("failed to parse {:?}", path));
let generated = codegen::generate(&ast);
output.push_str(&generated);
output.push('\n');
}
}
std::fs::write(out_file, &output)
.expect("failed to write generated file");
}