quectocraft/src/plugins/init_lua.rs

38 lines
1.1 KiB
Rust
Raw Normal View History

2022-12-05 16:31:45 +00:00
use log::{info, warn, trace, error, debug};
use mlua::{Lua, chunk};
2022-12-17 05:10:01 +00:00
use crate::VERSION;
2022-12-05 16:31:45 +00:00
2022-12-17 05:10:01 +00:00
pub fn init(lua: &Lua) -> Result<(), mlua::Error> {
2022-12-05 16:31:45 +00:00
macro_rules! log_any {
($level:tt) => {
lua.create_function(|_, args: (String, String)| {
$level!(target: &args.0, "{}", args.1);
Ok(())
})
}
}
let log_trace = log_any!(trace)?;
let log_debug = log_any!(debug)?;
let log_info = log_any!(info)?;
let log_warn = log_any!(warn)?;
let log_error = log_any!(error)?;
2022-12-17 05:10:01 +00:00
lua.load(include_str!("init.lua")).exec()?;
2022-12-05 16:31:45 +00:00
lua.load(chunk!{
function server.initLogger(plugin)
local id = "pl::" .. assert(plugin["id"])
return {
trace = function(msg) $log_trace(id, msg) end,
debug = function(msg) $log_debug(id, msg) end,
info = function(msg) $log_info(id, msg) end,
warn = function(msg) $log_warn(id, msg) end,
error = function(msg) $log_error(id, msg) end,
}
end
2022-12-17 05:10:01 +00:00
server.version = $VERSION
2022-12-05 16:31:45 +00:00
}).exec()?;
2022-12-17 05:10:01 +00:00
2022-12-05 16:31:45 +00:00
Ok(())
}