use heromodels::db::hero::OurDB; use heromodels::models::flow::register_flow_rhai_module; use rhai::Engine; use std::sync::Arc; use std::{fs, path::Path}; fn main() -> Result<(), Box> { // Initialize Rhai engine let mut engine = Engine::new(); // Initialize database with OurDB // Using a temporary/in-memory database for the example let db = Arc::new(OurDB::new("temp_flow_rhai_db", true).expect("Failed to create database")); // Register flow Rhai module functions register_flow_rhai_module(&mut engine, db.clone()); // Load and evaluate the Rhai script let script_path_str = "examples/flow_rhai/flow.rhai"; let script_path = Path::new(script_path_str); if !script_path.exists() { eprintln!("Error: Rhai script not found at {}", script_path_str); eprintln!("Please ensure the script 'flow.rhai' exists in the 'examples/flow_rhai/' directory."); return Err(Box::new(std::io::Error::new(std::io::ErrorKind::NotFound, format!("Rhai script not found: {}", script_path_str)))); } println!("Executing Rhai script: {}", script_path_str); let script = fs::read_to_string(script_path)?; match engine.eval::<()>(&script) { Ok(_) => println!("\nRhai script executed successfully!"), Err(e) => eprintln!("\nRhai script execution failed: {}\nDetails: {:#?}", e, e), } Ok(()) }