From 01983eb7b5fc553e6ca7ed713ff1c07b0234059b Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 20 Jan 2020 21:37:28 +0100 Subject: Introduce PluginLoaderFunc This allows registered plugins to execute code when loaded. This will also allow the Lua support code to be a plugin. Closes: https://todo.sr.ht/~sircmpwn/koushin/54 --- plugin.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'plugin.go') diff --git a/plugin.go b/plugin.go index 77000f2..4e46aaf 100644 --- a/plugin.go +++ b/plugin.go @@ -23,9 +23,13 @@ type Plugin interface { Close() error } -var plugins []Plugin +// PluginLoaderFunc loads plugins for the provided server. +type PluginLoaderFunc func(*Server) ([]Plugin, error) -// RegisterPlugin registers a plugin to be loaded on server startup. -func RegisterPlugin(p Plugin) { - plugins = append(plugins, p) +var pluginLoaders []PluginLoaderFunc + +// RegisterPluginLoader registers a plugin loader. The loader will be called on +// server start-up and reload. +func RegisterPluginLoader(f PluginLoaderFunc) { + pluginLoaders = append(pluginLoaders, f) } -- cgit v1.2.3-59-g8ed1b