Parcourir la source

feat: commit `serve` info

mrxiaozhuox il y a 2 ans
Parent
commit
062d0eab47
4 fichiers modifiés avec 57 ajouts et 40 suppressions
  1. 0 11
      Cargo.lock
  2. 1 1
      Cargo.toml
  3. 56 7
      src/plugin/interface/mod.rs
  4. 0 21
      src/plugin/mod.rs

+ 0 - 11
Cargo.lock

@@ -808,15 +808,6 @@ dependencies = [
  "syn",
 ]
 
-[[package]]
-name = "erased-serde"
-version = "0.3.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "003000e712ad0f95857bd4d2ef8d1890069e06554101697d12050668b2f6f020"
-dependencies = [
- "serde",
-]
-
 [[package]]
 name = "euclid"
 version = "0.22.7"
@@ -1600,7 +1591,6 @@ checksum = "10277581090f5cb7ecf814bc611152ce4db6dc8deffcaa08e24ed4c5197d9186"
 dependencies = [
  "bstr",
  "cc",
- "erased-serde",
  "futures-core",
  "futures-task",
  "futures-util",
@@ -1610,7 +1600,6 @@ dependencies = [
  "once_cell",
  "pkg-config",
  "rustc-hash",
- "serde",
 ]
 
 [[package]]

+ 1 - 1
Cargo.toml

@@ -60,7 +60,7 @@ dioxus-rsx-interpreter = { git = "https://github.com/dioxuslabs/dioxus/" }
 proc-macro2 = { version = "1.0", features = ["span-locations"] }
 
 # plugin packages
-mlua = { version = "0.8.1", features = ["lua54", "vendored", "async", "serialize"] }
+mlua = { version = "0.8.1", features = ["lua54", "vendored", "async"] }
 
 [[bin]]
 path = "src/main.rs"

+ 56 - 7
src/plugin/interface/mod.rs

@@ -1,5 +1,4 @@
 use mlua::{FromLua, Function, ToLua};
-use serde::Serialize;
 
 pub mod command;
 pub mod dirs;
@@ -52,7 +51,6 @@ impl<'lua> FromLua<'lua> for PluginInfo<'lua> {
             if let Ok(v) = tab.get::<_, PluginBuildInfo>("build") {
                 res.build = v;
             }
-
         }
 
         Ok(res)
@@ -105,10 +103,8 @@ impl<'lua> FromLua<'lua> for PluginBuildInfo<'lua> {
 
 impl<'lua> ToLua<'lua> for PluginBuildInfo<'lua> {
     fn to_lua(self, lua: &'lua mlua::Lua) -> mlua::Result<mlua::Value<'lua>> {
-
         let res = lua.create_table()?;
 
-
         if let Some(v) = self.on_start {
             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 interval: i32,
 
     pub on_start: 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))
+    }
+}

+ 0 - 21
src/plugin/mod.rs

@@ -167,27 +167,6 @@ impl PluginManager {
         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 {
         let app_path = app_path();
         let plugin_path = app_path.join("plugins");