From d31e0fff2fa92f48c9144b1ecccb7b1726c3e916 Mon Sep 17 00:00:00 2001 From: MedzikUser Date: Wed, 17 Aug 2022 22:05:27 +0200 Subject: [PATCH] fix(plugin): execute `on_load` function Now function `on_load` will be executed if the plugin is loads. Added span to the logger on TRACE level in plugin loader. Fixed clippy warning from previous commit. --- src/plugins/load.rs | 13 ++++++++++++- src/server/run.rs | 5 +++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/plugins/load.rs b/src/plugins/load.rs index 560f6c6..a353829 100644 --- a/src/plugins/load.rs +++ b/src/plugins/load.rs @@ -1,7 +1,8 @@ use std::{fs, path::Path, sync::Arc}; +use async_std::task; use libloading::{Library, Symbol}; -use tracing::{info, trace}; +use tracing::{info, span, trace, Level}; use crate::{ commands, @@ -30,6 +31,10 @@ pub fn loader(plugins_dir: &str) -> anyhow::Result { let path = plugin_path?.path(); let path_str = path.to_str().unwrap(); + // add span to logger + let span = span!(Level::TRACE, "", plugin_path = path_str); + let _enter = span.enter(); + info!("Loading plugin {}", path_str); // loading library from .so is unsafe @@ -48,5 +53,11 @@ pub fn loader(plugins_dir: &str) -> anyhow::Result { } } + for plugin in plugins_manager.plugins.iter() { + // execute the `on_load` function from the plugin + task::block_on(async { plugin.on_load().await }); + info!("Loaded plugin {}.", plugin.name()); + } + Ok(Arc::new(plugins_manager)) } diff --git a/src/server/run.rs b/src/server/run.rs index 57ecb50..a7ccc24 100644 --- a/src/server/run.rs +++ b/src/server/run.rs @@ -90,15 +90,16 @@ async fn process(client: Client) -> anyhow::Result<()> { // to block a command return error in the `onCommand` event if let Some((_i, cmd)) = command { // run `onCommand` events - if let Ok(_) = client + if client .run_events( EventType::OnCommand, EventData::Command(cmd.name().to_string()), ) .await + .is_ok() { // execute command - cmd.execute(&client, args).await?; + cmd.execute(client, args).await?; } } else { client.send("unknown command")?;