feat!: allow executing code after loading script
This commit is contained in:
parent
31e962fb9f
commit
5c052de95d
@ -6,7 +6,11 @@ use std::path::PathBuf;
|
|||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(version = build_info::version_formatted())]
|
#[command(version = build_info::version_formatted())]
|
||||||
pub struct Arguments {
|
pub struct Arguments {
|
||||||
/// Path to main Lua file
|
/// Path to Lua entrypoint
|
||||||
#[arg(short, long)]
|
#[arg(short, long)]
|
||||||
pub script: Option<PathBuf>,
|
pub script: Option<PathBuf>,
|
||||||
|
|
||||||
|
/// Code to execute after loading script
|
||||||
|
#[arg(short, long)]
|
||||||
|
pub exec: Option<String>,
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ pub fn reload(lua: &Lua, sender: Option<String>) -> Result<(), Error> {
|
|||||||
lua.load(
|
lua.load(
|
||||||
&std::fs::read_to_string(
|
&std::fs::read_to_string(
|
||||||
lua.globals()
|
lua.globals()
|
||||||
.get::<String>("script_path")
|
.get::<String>("SCRIPT_PATH")
|
||||||
.map_err(Error::MissingPath)?,
|
.map_err(Error::MissingPath)?,
|
||||||
)
|
)
|
||||||
.map_err(Error::ReadFile)?,
|
.map_err(Error::ReadFile)?,
|
||||||
|
@ -54,13 +54,17 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
let lua = unsafe { Lua::unsafe_new() };
|
let lua = unsafe { Lua::unsafe_new() };
|
||||||
let globals = lua.globals();
|
let globals = lua.globals();
|
||||||
|
|
||||||
globals.set("script_path", &*script_path)?;
|
|
||||||
lua::register_globals(&lua, &globals, event_listeners.clone())?;
|
lua::register_globals(&lua, &globals, event_listeners.clone())?;
|
||||||
|
globals.set("SCRIPT_PATH", &*script_path)?;
|
||||||
lua.load(
|
lua.load(
|
||||||
read_to_string(script_path)
|
read_to_string(script_path)
|
||||||
.expect(&(DEFAULT_SCRIPT_PATH.to_owned() + " should be in current directory")),
|
.expect(&(DEFAULT_SCRIPT_PATH.to_owned() + " should be in current directory")),
|
||||||
)
|
)
|
||||||
.exec()?;
|
.exec()?;
|
||||||
|
if let Some(code) = args.exec {
|
||||||
|
lua.load(code).exec()?;
|
||||||
|
}
|
||||||
|
|
||||||
let server = globals
|
let server = globals
|
||||||
.get::<String>("Server")
|
.get::<String>("Server")
|
||||||
.expect("Server should be in lua globals");
|
.expect("Server should be in lua globals");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user