run fennel
change xpwwzkqspxpxlyrkrxzrnquvvopspnsu
commit d926fd376938d9da84028772150f8aba98edb2ec
author Alpha Chen <alpha@kejadlen.dev>
date
parent kuznmtus
diff --git a/src/main.rs b/src/main.rs
index 9ca3d16..7daa64d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -7,22 +7,22 @@ fn main() -> LuaResult<()> {
     let args: Vec<String> = env::args().collect();
 
     if args.len() != 2 {
-        eprintln!("Usage: {} <script.lua>", args[0]);
+        eprintln!("Usage: {} <script.fnl>", args[0]);
         process::exit(1);
     }
 
     let filename = &args[1];
-    let script_content = fs::read_to_string(filename).unwrap_or_else(|err| {
-        eprintln!("Error reading file '{}': {}", filename, err);
-        process::exit(1);
-    });
 
     let lua = Lua::new();
 
     let fennel_code = include_str!("../fennel-1.6.0.lua");
-    lua.load(fennel_code).exec()?;
+    let fennel_module = lua.load(fennel_code).eval::<LuaValue>()?;
+
+    lua.globals().set("fennel", fennel_module.clone())?;
+    lua.load(r#"package.preload["fennel"] = function() return fennel end"#).exec()?;
 
-    lua.load(&script_content).exec()?;
+    let dofile_code = format!(r#"require("fennel").install().dofile("{}")"#, filename);
+    lua.load(&dofile_code).exec()?;
 
     Ok(())
 }