diff --git a/src/cli.rs b/src/cli.rs index 1dea2aa..9e25bc6 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -122,7 +122,21 @@ pub fn start_cli(server: Arc, plugin_loader: PluginLoader) { } } "load" "loads a plugin that has been installed" => { - if require_args(&args, &[""]) { + if require_args(&args, &[""]) { + plugin_loader.load(&server.root.join("plugins").join(&args[1])); + } + } + "reload" "restarts a plugin that has been installed" => { + if require_args(&args, &[""]) { + let target = args[1].as_str(); + for plugin in server.plugins.lock().unwrap().iter_mut() { + if plugin.get_id() == target { + LOGGER.info("Stopping plugin"); + if let Err(e) = plugin.stop() { + LOGGER.warn(e.context("Couldn't stop plugin")); + } + } + } plugin_loader.load(&server.root.join("plugins").join(&args[1])); } } diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs index 07f173d..2561eb6 100644 --- a/src/plugin/mod.rs +++ b/src/plugin/mod.rs @@ -69,4 +69,8 @@ impl Plugin { self.child.lock().unwrap().kill()?; Ok(()) } + + pub fn get_id(&self) -> String { + self.id.clone() + } }