summaryrefslogtreecommitdiffstats
path: root/app/plugin.go
diff options
context:
space:
mode:
authorJesse Hallam <jesse.hallam@gmail.com>2018-07-26 08:45:26 -0400
committerJoram Wilander <jwawilander@gmail.com>2018-07-26 08:45:26 -0400
commit8948b91d7a80169b12907e16581cfdd53bbb73f1 (patch)
treedd84c35a664c7787b8080920692dc943b58f5d31 /app/plugin.go
parentf8f80d80df1e27e2ed4dcc91518bf504ab7f3e34 (diff)
downloadchat-8948b91d7a80169b12907e16581cfdd53bbb73f1.tar.gz
chat-8948b91d7a80169b12907e16581cfdd53bbb73f1.tar.bz2
chat-8948b91d7a80169b12907e16581cfdd53bbb73f1.zip
unpack prepacked plugins on plugins initialization (#9149)
* unpack prepackaged plugins on plugins initialization * leverage utils.FindDir
Diffstat (limited to 'app/plugin.go')
-rw-r--r--app/plugin.go21
1 files changed, 21 insertions, 0 deletions
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) {