diff --git a/src/plugin/interface/command.rs b/src/plugin/interface/command.rs index bc7040047..34b6f9082 100644 --- a/src/plugin/interface/command.rs +++ b/src/plugin/interface/command.rs @@ -59,27 +59,6 @@ impl UserData for PluginCommander { Ok(()) }, ); - methods.add_function("execQuiet", |_, cmd: Vec| { - if cmd.len() == 0 { - return Ok(()); - } - let cmd_name = cmd.get(0).unwrap(); - let mut command = Command::new(cmd_name); - let t = cmd - .iter() - .enumerate() - .filter(|(i, _)| *i > 0) - .map(|v| v.1.clone()) - .collect::>(); - command.args(t); - command.stdout(Stdio::null()); - command.output()?; - Ok(()) - }); - methods.add_function("execSimple", |_, cmd: String| { - let _ = Command::new(cmd).stdout(Stdio::inherit()).output()?; - Ok(()) - }); } fn add_fields<'lua, F: mlua::UserDataFields<'lua, Self>>(_fields: &mut F) {} diff --git a/src/plugin/interface/fs.rs b/src/plugin/interface/fs.rs new file mode 100644 index 000000000..24169e011 --- /dev/null +++ b/src/plugin/interface/fs.rs @@ -0,0 +1,21 @@ +use std::path::PathBuf; + +use mlua::UserData; + +pub struct PluginFileSystem; +impl UserData for PluginFileSystem { + fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) { + methods.add_function("exists", |_, path: String| { + let path = PathBuf::from(path); + Ok(path.exists()) + }); + methods.add_function("is_dir", |_, path: String| { + let path = PathBuf::from(path); + Ok(path.is_dir()) + }); + methods.add_function("is_file", |_, path: String| { + let path = PathBuf::from(path); + Ok(path.is_file()) + }); + } +} \ No newline at end of file diff --git a/src/plugin/interface/mod.rs b/src/plugin/interface/mod.rs index 219ba2f47..d843c0e6a 100644 --- a/src/plugin/interface/mod.rs +++ b/src/plugin/interface/mod.rs @@ -2,6 +2,7 @@ use mlua::{FromLua, Function, ToLua}; pub mod logger; pub mod command; +pub mod fs; #[derive(Debug)] pub struct PluginInfo<'lua> { @@ -38,16 +39,16 @@ impl<'lua> FromLua<'lua> for PluginInfo<'lua> { res.author = v; } - if let Ok(v) = tab.get::<_, Function>("onInit") { + if let Ok(v) = tab.get::<_, Function>("on_init") { res.on_init = Some(v); } - if let Ok(v) = tab.get::<_, Function>("onLoad") { + if let Ok(v) = tab.get::<_, Function>("on_load") { res.on_load = Some(v); } - if let Ok(v) = tab.get::<_, Function>("onBuildStart") { + if let Ok(v) = tab.get::<_, Function>("on_build_start") { res.on_build_start = Some(v); } - if let Ok(v) = tab.get::<_, Function>("onBuildFinish") { + if let Ok(v) = tab.get::<_, Function>("on_build_finish") { res.on_build_finish = Some(v); } @@ -67,16 +68,16 @@ impl<'lua> ToLua<'lua> for PluginInfo<'lua> { res.set("author", self.author.to_string())?; if let Some(e) = self.on_init { - res.set("onInit", e)?; + res.set("on_init", e)?; } if let Some(e) = self.on_load { - res.set("onLoad", e)?; + res.set("on_load", e)?; } if let Some(e) = self.on_build_start { - res.set("onBuildStart", e)?; + res.set("on_build_start", e)?; } if let Some(e) = self.on_build_finish { - res.set("onBuildFinish", e)?; + res.set("on_build_finish", e)?; } Ok(mlua::Value::Table(res)) diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs index ffb012e32..aa98d7684 100644 --- a/src/plugin/mod.rs +++ b/src/plugin/mod.rs @@ -7,7 +7,7 @@ use crate::tools::{app_path, clone_repo}; use self::{ interface::PluginInfo, - interface::{command::PluginCommander, logger::PluginLogger}, + interface::{command::PluginCommander, logger::PluginLogger, fs::PluginFileSystem}, }; pub mod interface; @@ -32,10 +32,11 @@ impl PluginManager { let manager = lua.create_table().unwrap(); - lua.globals().set("plugin_logger", PluginLogger).unwrap(); + lua.globals().set("PLUGIN_LOGGER", PluginLogger).unwrap(); lua.globals() - .set("plugin_commander", PluginCommander) + .set("PLUGIN_COMMAND", PluginCommander) .unwrap(); + lua.globals().set("PLUGINFS", PluginFileSystem).unwrap(); let plugin_dir = Self::init_plugin_dir(); let mut index = 1;