diff --git a/src/main.rs b/src/main.rs index c54971ba0..500e3a2ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,10 +7,14 @@ async fn main() -> Result<()> { let args = Cli::parse(); set_up_logging(); - let _ = PluginManager::init(&PluginConfig { + let plugin_state = PluginManager::init(&PluginConfig { available: true, required: vec![], }); + if !plugin_state { + log::error!("🚫 Plugin system initialization failed"); + exit(1); + } match args.action { Commands::Translate(opts) => { diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs index f3c5af446..879f92aa6 100644 --- a/src/plugin/mod.rs +++ b/src/plugin/mod.rs @@ -38,9 +38,6 @@ pub struct PluginManager; impl PluginManager { pub fn init(config: &PluginConfig) -> bool { - if !config.available { - return false; - } let lua = if let Ok(v) = LUA.lock() { v @@ -48,6 +45,12 @@ impl PluginManager { return false; }; + if !config.available { + // // if plugin system is available, just set manager to nil. + // lua.globals().set("manager", mlua::Value::Nil).unwrap(); + return true; + } + let manager = lua.create_table().unwrap(); let plugin_dir = Self::init_plugin_dir(); @@ -136,6 +139,9 @@ impl PluginManager { let lua = LUA.lock().unwrap(); + if !lua.globals().contains_key("manager")? { + return Ok(()); + } let manager = lua.globals().get::<_, Table>("manager")?; let args = lua.create_table()?; @@ -157,6 +163,9 @@ impl PluginManager { pub fn on_build_finish(crate_config: &CrateConfig, platform: &str) -> anyhow::Result<()> { let lua = LUA.lock().unwrap(); + if !lua.globals().contains_key("manager")? { + return Ok(()); + } let manager = lua.globals().get::<_, Table>("manager")?; let args = lua.create_table()?; @@ -178,6 +187,9 @@ impl PluginManager { pub fn on_serve_start(crate_config: &CrateConfig) -> anyhow::Result<()> { let lua = LUA.lock().unwrap(); + if !lua.globals().contains_key("manager")? { + return Ok(()); + } let manager = lua.globals().get::<_, Table>("manager")?; let args = lua.create_table()?; @@ -219,6 +231,9 @@ impl PluginManager { pub fn on_serve_shutdown(crate_config: &CrateConfig) -> anyhow::Result<()> { let lua = LUA.lock().unwrap(); + if !lua.globals().contains_key("manager")? { + return Ok(()); + } let manager = lua.globals().get::<_, Table>("manager")?; let args = lua.create_table()?;