From 09d517746d785ea3189dfbbba57c1aa5c6581e03 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Thu, 15 Aug 2019 11:21:04 -0700 Subject: [PATCH] feat: improve plugin preload logic * Allow '*' meaning "load all plugins". * Expose a Preload function that users can call. --- plugin/loader/loader.go | 7 +++++++ plugin/loader/preload.go | 11 +++++------ plugin/loader/preload.sh | 9 +++++---- plugin/loader/preload_list | 10 +++++----- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/plugin/loader/loader.go b/plugin/loader/loader.go index b2276e1d7..7788d8e83 100644 --- a/plugin/loader/loader.go +++ b/plugin/loader/loader.go @@ -15,6 +15,13 @@ import ( opentracing "github.com/opentracing/opentracing-go" ) +var preloadPlugins []plugin.Plugin + +// Preload adds one or more plugins to the preload list. This should _only_ be called during init. +func Preload(plugins ...plugin.Plugin) { + preloadPlugins = append(preloadPlugins, plugins...) +} + var log = logging.Logger("plugin/loader") var loadPluginsFunc = func(string) ([]plugin.Plugin, error) { diff --git a/plugin/loader/preload.go b/plugin/loader/preload.go index 730f3538e..2c6d512bf 100644 --- a/plugin/loader/preload.go +++ b/plugin/loader/preload.go @@ -1,7 +1,6 @@ package loader import ( - "github.com/ipfs/go-ipfs/plugin" pluginbadgerds "github.com/ipfs/go-ipfs/plugin/plugins/badgerds" pluginflatfs "github.com/ipfs/go-ipfs/plugin/plugins/flatfs" pluginipldgit "github.com/ipfs/go-ipfs/plugin/plugins/git" @@ -12,9 +11,9 @@ import ( // This file is being generated as part of plugin build process // To change it, modify the plugin/loader/preload.sh -var preloadPlugins = []plugin.Plugin{ - pluginipldgit.Plugins[0], - pluginbadgerds.Plugins[0], - pluginflatfs.Plugins[0], - pluginlevelds.Plugins[0], +func init() { + Preload(pluginipldgit.Plugins...) + Preload(pluginbadgerds.Plugins...) + Preload(pluginflatfs.Plugins...) + Preload(pluginlevelds.Plugins...) } diff --git a/plugin/loader/preload.sh b/plugin/loader/preload.sh index 5d000d0a3..c2ec7e69b 100755 --- a/plugin/loader/preload.sh +++ b/plugin/loader/preload.sh @@ -10,7 +10,6 @@ cat <