mirror of
https://github.com/lune-org/lune.git
synced 2024-12-12 13:00:37 +00:00
Make it easier to emit formatted lua errors
This commit is contained in:
parent
c484ae73d6
commit
a91e24eb01
4 changed files with 24 additions and 10 deletions
|
@ -12,9 +12,9 @@ use hyper::{Body, Request, Response};
|
|||
use hyper_tungstenite::{is_upgrade_request as is_ws_upgrade_request, upgrade as ws_upgrade};
|
||||
use tokio::{sync::oneshot, task};
|
||||
|
||||
use crate::{
|
||||
lune::{scheduler::Scheduler, util::TableBuilder},
|
||||
LuneError,
|
||||
use crate::lune::{
|
||||
scheduler::Scheduler,
|
||||
util::{traits::LuaEmitErrorExt, TableBuilder},
|
||||
};
|
||||
|
||||
use super::{NetServeResponse, NetWebSocket};
|
||||
|
@ -116,15 +116,14 @@ impl Service<Request<Body>> for NetServiceInner {
|
|||
.with_value("body", lua.create_string(&bytes)?)?
|
||||
.build_readonly()?;
|
||||
let response: LuaResult<NetServeResponse> = handler.call(request);
|
||||
// Send below errors to task scheduler so that they can emit properly
|
||||
let lua_error = match response {
|
||||
// Return successful response, or emit any error using pretty formatting
|
||||
lua.emit_error(match response {
|
||||
Ok(r) => match r.into_response() {
|
||||
Ok(res) => return Ok(res),
|
||||
Err(err) => err,
|
||||
},
|
||||
Err(err) => err,
|
||||
};
|
||||
eprintln!("{}", LuneError::from(lua_error));
|
||||
});
|
||||
Ok(Response::builder()
|
||||
.status(500)
|
||||
.body(Body::from("Internal Server Error"))
|
||||
|
|
|
@ -5,7 +5,7 @@ use mlua::prelude::*;
|
|||
|
||||
use tokio::task::LocalSet;
|
||||
|
||||
use crate::LuneError;
|
||||
use crate::lune::util::traits::LuaEmitErrorExt;
|
||||
|
||||
use super::Scheduler;
|
||||
|
||||
|
@ -53,8 +53,7 @@ where
|
|||
// a non-zero exit code, and print it out to stderr
|
||||
if let Err(err) = &res {
|
||||
self.state.increment_error_count();
|
||||
// NOTE: LuneError will pretty-format this error
|
||||
eprintln!("{}", LuneError::from(err));
|
||||
self.lua.emit_error(err.clone());
|
||||
}
|
||||
|
||||
// Send results of resuming this thread to any listeners
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
mod table_builder;
|
||||
|
||||
pub mod formatting;
|
||||
pub mod traits;
|
||||
|
||||
pub use table_builder::TableBuilder;
|
||||
|
|
15
src/lune/util/traits.rs
Normal file
15
src/lune/util/traits.rs
Normal file
|
@ -0,0 +1,15 @@
|
|||
use mlua::prelude::*;
|
||||
|
||||
use super::formatting::format_label;
|
||||
use crate::LuneError;
|
||||
|
||||
pub trait LuaEmitErrorExt {
|
||||
fn emit_error(&self, err: LuaError);
|
||||
}
|
||||
|
||||
impl LuaEmitErrorExt for Lua {
|
||||
fn emit_error(&self, err: LuaError) {
|
||||
// NOTE: LuneError will pretty-format this error
|
||||
eprintln!("{}\n{}", format_label("error"), LuneError::from(err));
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue