Implemented script reloading
This commit is contained in:
10
Cargo.lock
generated
10
Cargo.lock
generated
@@ -1242,6 +1242,15 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "signal-hook-registry"
|
||||||
|
version = "1.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "slab"
|
name = "slab"
|
||||||
version = "0.4.9"
|
version = "0.4.9"
|
||||||
@@ -1433,6 +1442,7 @@ dependencies = [
|
|||||||
"mio",
|
"mio",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
"signal-hook-registry",
|
||||||
"socket2 0.5.5",
|
"socket2 0.5.5",
|
||||||
"tokio-macros",
|
"tokio-macros",
|
||||||
"windows-sys",
|
"windows-sys",
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ anyhow = "1"
|
|||||||
fern = "0.6.2"
|
fern = "0.6.2"
|
||||||
log = "0.4.20"
|
log = "0.4.20"
|
||||||
structopt = "0.3"
|
structopt = "0.3"
|
||||||
tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros", "rt"] }
|
tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros", "rt", "signal"] }
|
||||||
tokio-util = { version = "0.7.10", features = ["io", "io-util", "rt", "compat"] }
|
tokio-util = { version = "0.7.10", features = ["io", "io-util", "rt", "compat"] }
|
||||||
mlua = { version = "0.9.1", features = ["luau-jit", "vendored", "async", "send"] }
|
mlua = { version = "0.9.1", features = ["luau-jit", "vendored", "async", "send"] }
|
||||||
reqwest = { version = "0.11.22", features = ["stream"] }
|
reqwest = { version = "0.11.22", features = ["stream"] }
|
||||||
|
|||||||
12
src/main.rs
12
src/main.rs
@@ -5,6 +5,7 @@ use std::net::{Ipv4Addr, Ipv6Addr};
|
|||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
use tokio::signal::unix::SignalKind;
|
||||||
|
|
||||||
mod handler;
|
mod handler;
|
||||||
mod engine;
|
mod engine;
|
||||||
@@ -62,7 +63,16 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
engine_impl.load_script(opts.script.clone()).await?;
|
engine_impl.load_script(opts.script.clone()).await?;
|
||||||
|
|
||||||
local_set.spawn_local(engine_impl.run());
|
local_set.spawn_local(engine_impl.run());
|
||||||
|
{
|
||||||
|
let engine = engine.clone();
|
||||||
|
let script = opts.script.clone();
|
||||||
|
let mut hup_stream = tokio::signal::unix::signal(SignalKind::hangup())?;
|
||||||
|
local_set.spawn_local(async move {
|
||||||
|
while let Some(_) = hup_stream.recv().await {
|
||||||
|
engine.load_script(script.clone()).await.ok();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
let handler = handler::Handler::new(
|
let handler = handler::Handler::new(
|
||||||
engine.clone(),
|
engine.clone(),
|
||||||
opts.serve.as_ref()
|
opts.serve.as_ref()
|
||||||
|
|||||||
Reference in New Issue
Block a user