pub mod clock;
pub mod core;
pub mod dst;
pub mod log;
pub mod net;
pub mod pg;
pub mod random;
pub mod storage;
pub mod subs;
pub mod workload;
use mlua::{Lua, Table};
use crate::application::BindingContext;
pub trait LuaModule {
fn register(lua: &Lua, dstest: &Table, ctx: &BindingContext) -> mlua::Result<()>;
}
pub fn register_all(lua: &Lua, ctx: &BindingContext) -> mlua::Result<()> {
let globals = lua.globals();
globals.set(
"print",
lua.create_function(|_, msg: String| {
tracing::info!("lua: {}", msg);
Ok(())
})?,
)?;
let dstest = lua.create_table()?;
globals.set("dstest", dstest.clone())?;
net::Net::register(lua, &dstest, ctx)?;
dst::Dst::register(lua, &dstest, ctx)?;
subs::Subs::register(lua, &dstest, ctx)?;
log::Log::register(lua, &dstest, ctx)?;
clock::Clock::register(lua, &dstest, ctx)?;
core::Core::register(lua, &dstest, ctx)?;
pg::Pg::register(lua, &dstest, ctx)?;
storage::Storage::register(lua, &dstest, ctx)?;
random::Random::register(lua, &dstest, ctx)?;
workload::Workload::register(lua, &dstest, ctx)?;
Ok(())
}