diff --git a/Cargo.lock b/Cargo.lock index 2bb087c..9e29f7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1180,6 +1180,7 @@ dependencies = [ "azalea", "clap", "futures", + "log", "mlua", "parking_lot", "tokio", diff --git a/Cargo.toml b/Cargo.toml index 5b731f3..7c1c862 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,6 +20,7 @@ anyhow = "1" azalea = { git = "https://github.com/azalea-rs/azalea.git" } clap = { version = "4", features = ["derive"] } futures = "0" +log = { version = "0" } mlua = { version = "0", features = ["async", "luau", "send"] } parking_lot = { version = "0" } tokio = { version = "1", features = ["macros"] } diff --git a/src/events.rs b/src/events.rs index 5a43029..e720349 100644 --- a/src/events.rs +++ b/src/events.rs @@ -1,5 +1,6 @@ use crate::{State, commands::CommandSource, scripting}; use azalea::prelude::*; +use log::info; use mlua::Function; pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow::Result<()> { @@ -7,7 +8,7 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow: match event { Event::Chat(message) => { - println!("{}", message.message().to_ansi()); + info!("{}", message.message().to_ansi()); let owners = globals.get::>("OWNERS")?; if message.is_whisper() diff --git a/src/main.rs b/src/main.rs index fcf5314..774efa7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -50,13 +50,8 @@ async fn main() -> ExitCode { eprintln!("failed to set config_path in lua globals: {error:?}"); return ExitCode::FAILURE; }; - - let Ok(server) = globals.get::("Server") else { - eprintln!("no server defined in lua globals!"); - return ExitCode::FAILURE; - }; - let Ok(username) = globals.get::("Username") else { - eprintln!("no username defined in lua globals!"); + if let Err(error) = scripting::logging::init(&lua, &globals) { + eprintln!("failed to set up logging wrappers: {error:?}"); return ExitCode::FAILURE; }; diff --git a/src/scripting/logging.rs b/src/scripting/logging.rs new file mode 100644 index 0000000..cb9bf7b --- /dev/null +++ b/src/scripting/logging.rs @@ -0,0 +1,41 @@ +use log::{debug, error, info, trace, warn}; +use mlua::{Lua, Result, Table}; + +pub fn init(lua: &Lua, globals: &Table) -> Result<()> { + globals.set( + "error", + lua.create_function(|_, message: String| { + error!("{message}"); + Ok(()) + })?, + )?; + globals.set( + "warn", + lua.create_function(|_, message: String| { + warn!("{message}"); + Ok(()) + })?, + )?; + globals.set( + "info", + lua.create_function(|_, message: String| { + info!("{message}"); + Ok(()) + })?, + )?; + globals.set( + "debug", + lua.create_function(|_, message: String| { + debug!("{message}"); + Ok(()) + })?, + )?; + globals.set( + "trace", + lua.create_function(|_, message: String| { + trace!("{message}"); + Ok(()) + })?, + )?; + Ok(()) +} diff --git a/src/scripting/mod.rs b/src/scripting/mod.rs index a24d5d2..70cc1ba 100644 --- a/src/scripting/mod.rs +++ b/src/scripting/mod.rs @@ -1,2 +1,3 @@ pub mod client; +pub mod logging; pub mod position;