feat: commit serve info
This commit is contained in:
1 parent
6c1374edb3
commit
062d0eab47
4 files changed
+56
-39
No files matched your search
Generated
-11
@@ -808,15 +808,6 @@ dependencies = [
|
|||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "erased-serde"
|
|
||||||
version = "0.3.22"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "003000e712ad0f95857bd4d2ef8d1890069e06554101697d12050668b2f6f020"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "euclid"
|
name = "euclid"
|
||||||
version = "0.22.7"
|
version = "0.22.7"
|
||||||
@@ -1600,7 +1591,6 @@ checksum = "10277581090f5cb7ecf814bc611152ce4db6dc8deffcaa08e24ed4c5197d9186"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"bstr",
|
"bstr",
|
||||||
"cc",
|
"cc",
|
||||||
"erased-serde",
|
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-task",
|
"futures-task",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@@ -1610,7 +1600,6 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"serde",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ dioxus-rsx-interpreter = { git = "https://github.com/dioxuslabs/dioxus/" }
|
|||||||
proc-macro2 = { version = "1.0", features = ["span-locations"] }
|
proc-macro2 = { version = "1.0", features = ["span-locations"] }
|
||||||
|
|
||||||
# plugin packages
|
# plugin packages
|
||||||
mlua = { version = "0.8.1", features = ["lua54", "vendored", "async", "serialize"] }
|
mlua = { version = "0.8.1", features = ["lua54", "vendored", "async"] }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
path = "src/main.rs"
|
path = "src/main.rs"
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
use mlua::{FromLua, Function, ToLua};
|
use mlua::{FromLua, Function, ToLua};
|
||||||
use serde::Serialize;
|
|
||||||
|
|
||||||
pub mod command;
|
pub mod command;
|
||||||
pub mod dirs;
|
pub mod dirs;
|
||||||
@@ -52,7 +51,6 @@ impl<'lua> FromLua<'lua> for PluginInfo<'lua> {
|
|||||||
if let Ok(v) = tab.get::<_, PluginBuildInfo>("build") {
|
if let Ok(v) = tab.get::<_, PluginBuildInfo>("build") {
|
||||||
res.build = v;
|
res.build = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(res)
|
Ok(res)
|
||||||
@@ -105,10 +103,8 @@ impl<'lua> FromLua<'lua> for PluginBuildInfo<'lua> {
|
|||||||
|
|
||||||
impl<'lua> ToLua<'lua> for PluginBuildInfo<'lua> {
|
impl<'lua> ToLua<'lua> for PluginBuildInfo<'lua> {
|
||||||
fn to_lua(self, lua: &'lua mlua::Lua) -> mlua::Result<mlua::Value<'lua>> {
|
fn to_lua(self, lua: &'lua mlua::Lua) -> mlua::Result<mlua::Value<'lua>> {
|
||||||
|
|
||||||
let res = lua.create_table()?;
|
let res = lua.create_table()?;
|
||||||
|
|
||||||
|
|
||||||
if let Some(v) = self.on_start {
|
if let Some(v) = self.on_start {
|
||||||
res.set("on_start", v)?;
|
res.set("on_start", v)?;
|
||||||
}
|
}
|
||||||
@@ -121,11 +117,64 @@ impl<'lua> ToLua<'lua> for PluginBuildInfo<'lua> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, Serialize)]
|
#[derive(Debug, Clone, Default)]
|
||||||
pub struct PluginServeInfo<'lua> {
|
pub struct PluginServeInfo<'lua> {
|
||||||
|
|
||||||
pub interval: i32,
|
pub interval: i32,
|
||||||
|
|
||||||
pub on_start: Option<Function<'lua>>,
|
pub on_start: Option<Function<'lua>>,
|
||||||
pub on_interval: Option<Function<'lua>>,
|
pub on_interval: Option<Function<'lua>>,
|
||||||
|
pub on_rebuild: Option<Function<'lua>>,
|
||||||
|
pub on_shutdown: Option<Function<'lua>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'lua> FromLua<'lua> for PluginServeInfo<'lua> {
|
||||||
|
fn from_lua(lua_value: mlua::Value<'lua>, _lua: &'lua mlua::Lua) -> mlua::Result<Self> {
|
||||||
|
let mut res = Self::default();
|
||||||
|
|
||||||
|
if let mlua::Value::Table(tab) = lua_value {
|
||||||
|
if let Ok(v) = tab.get::<_, i32>("interval") {
|
||||||
|
res.interval = v;
|
||||||
|
}
|
||||||
|
if let Ok(v) = tab.get::<_, Function>("on_start") {
|
||||||
|
res.on_start = Some(v);
|
||||||
|
}
|
||||||
|
if let Ok(v) = tab.get::<_, Function>("on_interval") {
|
||||||
|
res.on_interval = Some(v);
|
||||||
|
}
|
||||||
|
if let Ok(v) = tab.get::<_, Function>("on_rebuild") {
|
||||||
|
res.on_rebuild = Some(v);
|
||||||
|
}
|
||||||
|
if let Ok(v) = tab.get::<_, Function>("on_shutdown") {
|
||||||
|
res.on_shutdown = Some(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(res)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'lua> ToLua<'lua> for PluginServeInfo<'lua> {
|
||||||
|
fn to_lua(self, lua: &'lua mlua::Lua) -> mlua::Result<mlua::Value<'lua>> {
|
||||||
|
let res = lua.create_table()?;
|
||||||
|
|
||||||
|
res.set("interval", self.interval)?;
|
||||||
|
|
||||||
|
if let Some(v) = self.on_start {
|
||||||
|
res.set("on_start", v)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(v) = self.on_interval {
|
||||||
|
res.set("on_interval", v)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(v) = self.on_rebuild {
|
||||||
|
res.set("on_rebuild", v)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(v) = self.on_shutdown {
|
||||||
|
res.set("on_shutdown", v)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(mlua::Value::Table(res))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -167,27 +167,6 @@ impl PluginManager {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn call_event<'lua>(&self, event: &str, args: impl ToLuaMulti<'lua>) -> anyhow::Result<()> {
|
|
||||||
let lua = &self.lua;
|
|
||||||
|
|
||||||
let manager = lua.globals().get::<_, Table>("manager")?;
|
|
||||||
|
|
||||||
for i in 1..(manager.len()? as i32 + 1) {
|
|
||||||
let info = manager.get::<_, PluginInfo>(i)?;
|
|
||||||
let func = match event {
|
|
||||||
"on_init" => info.on_init,
|
|
||||||
"build.on_start" => info.build.on_start,
|
|
||||||
_ => None,
|
|
||||||
};
|
|
||||||
|
|
||||||
if let Some(func) = func {
|
|
||||||
func.call(args)?;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn init_plugin_dir() -> PathBuf {
|
fn init_plugin_dir() -> PathBuf {
|
||||||
let app_path = app_path();
|
let app_path = app_path();
|
||||||
let plugin_path = app_path.join("plugins");
|
let plugin_path = app_path.join("plugins");
|
||||||
|
|||||||
Reference in new issue
Block a user