use crate::sexp::Parser;
use crate::AstBuilder;
use anyhow::Result;
use std::path::PathBuf;
pub fn execute(input: PathBuf, output: Option<PathBuf>) -> Result<()> {
let sexp_text = oxur_cli::common::io::read_input(&input)?;
let sexp = Parser::parse_str(&sexp_text)?;
let mut builder = AstBuilder::new();
let crate_node = builder.build_crate(&sexp)?;
let rust_output = crate::gen_rs::generate_rust(&crate_node)?;
oxur_cli::common::io::write_output(&rust_output, output.as_deref())?;
Ok(())
}