aboutsummaryrefslogtreecommitdiff
path: root/plugin.go
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-01-20 21:37:28 +0100
committerSimon Ser <contact@emersion.fr>2020-01-20 21:37:28 +0100
commit01983eb7b5fc553e6ca7ed713ff1c07b0234059b (patch)
treef99646209f5c342ed0731ed35a25ec5f269c5f78 /plugin.go
parentd19c17c6d58bcdecbb03125bd4f57b703d726ce5 (diff)
downloadalps-01983eb7b5fc553e6ca7ed713ff1c07b0234059b.tar.gz
alps-01983eb7b5fc553e6ca7ed713ff1c07b0234059b.zip
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
Diffstat (limited to 'plugin.go')
-rw-r--r--plugin.go12
1 files changed, 8 insertions, 4 deletions
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)
}