From 8948b91d7a80169b12907e16581cfdd53bbb73f1 Mon Sep 17 00:00:00 2001 From: Jesse Hallam Date: Thu, 26 Jul 2018 08:45:26 -0400 Subject: unpack prepacked plugins on plugins initialization (#9149) * unpack prepackaged plugins on plugins initialization * leverage utils.FindDir --- app/plugin.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'app/plugin.go') diff --git a/app/plugin.go b/app/plugin.go index 8fce76f39..8838e31a9 100644 --- a/app/plugin.go +++ b/app/plugin.go @@ -6,11 +6,13 @@ package app import ( "net/http" "os" + "path/filepath" "strings" "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/plugin" + "github.com/mattermost/mattermost-server/utils" ) func (a *App) SyncPluginsActiveState() { @@ -101,6 +103,25 @@ func (a *App) InitPlugins(pluginDir, webappPluginDir string) { a.Plugins = env } + prepackagedPluginsDir, found := utils.FindDir("prepackaged_plugins") + if found { + if err := filepath.Walk(prepackagedPluginsDir, func(walkPath string, info os.FileInfo, err error) error { + if !strings.HasSuffix(walkPath, ".tar.gz") { + return nil + } + + if fileReader, err := os.Open(walkPath); err != nil { + mlog.Error("Failed to open prepackaged plugin", mlog.Err(err), mlog.String("path", walkPath)) + } else if _, err := a.InstallPlugin(fileReader, true); err != nil { + mlog.Error("Failed to unpack prepackaged plugin", mlog.Err(err), mlog.String("path", walkPath)) + } + + return nil + }); err != nil { + mlog.Error("Failed to complete unpacking prepackaged plugins", mlog.Err(err)) + } + } + // Sync plugin active state when config changes. Also notify plugins. a.RemoveConfigListener(a.PluginConfigListenerId) a.PluginConfigListenerId = a.AddConfigListener(func(*model.Config, *model.Config) { -- cgit v1.2.3-1-g7c22