Implement custom lua print function that calls info
This commit is contained in:
25
src/main.rs
25
src/main.rs
@@ -1,3 +1,4 @@
|
|||||||
|
#![feature(iter_intersperse)]
|
||||||
mod web;
|
mod web;
|
||||||
|
|
||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
@@ -83,6 +84,30 @@ async fn app() -> anyhow::Result<()> {
|
|||||||
warn!("{text}");
|
warn!("{text}");
|
||||||
Ok(())
|
Ok(())
|
||||||
});
|
});
|
||||||
|
let print = lua.create_function(|lua, values: mlua::Variadic<mlua::Value>| {
|
||||||
|
// Fortmat the values the same way lua does by default
|
||||||
|
let text: String = values
|
||||||
|
.iter()
|
||||||
|
.map(|value| {
|
||||||
|
value.to_string().unwrap_or_else(|_| {
|
||||||
|
format!("{}: {}", value.type_name(), value.to_pointer().addr())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.intersperse("\t".to_owned())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// Level 1 of the stack gives us the location that called this function
|
||||||
|
let stack = lua.inspect_stack(1).unwrap();
|
||||||
|
let file = stack.source().short_src.unwrap_or("?".into());
|
||||||
|
let line = stack.curr_line();
|
||||||
|
|
||||||
|
// The target is overridden to make it possible to filter for logs originating from the
|
||||||
|
// config
|
||||||
|
info!(target: "automation_config", %file, line, "{text}");
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
lua.globals().set("print", print)?;
|
||||||
|
|
||||||
let automation = lua.create_table()?;
|
let automation = lua.create_table()?;
|
||||||
let event_channel = device_manager.event_channel();
|
let event_channel = device_manager.event_channel();
|
||||||
|
|||||||
Reference in New Issue
Block a user