summaryrefslogtreecommitdiffstats
path: root/app/plugin.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2018-03-13 10:32:24 -0400
committerGitHub <noreply@github.com>2018-03-13 10:32:24 -0400
commit4ae1238bc12537632289960f58e52d3c625d37e3 (patch)
treefa211d08df1e5f50d54d6d3ca6dbd88ce129800a /app/plugin.go
parentff5f511dfd7e6b2019d1a56922dfa72181307b46 (diff)
downloadchat-4ae1238bc12537632289960f58e52d3c625d37e3.tar.gz
chat-4ae1238bc12537632289960f58e52d3c625d37e3.tar.bz2
chat-4ae1238bc12537632289960f58e52d3c625d37e3.zip
Better error handling for failed plugin activation (#8361)
Diffstat (limited to 'app/plugin.go')
-rw-r--r--app/plugin.go30
1 files changed, 21 insertions, 9 deletions
diff --git a/app/plugin.go b/app/plugin.go
index fe671d26a..22d333679 100644
--- a/app/plugin.go
+++ b/app/plugin.go
@@ -91,18 +91,11 @@ func (a *App) ActivatePlugins() {
active := a.PluginEnv.IsPluginActive(id)
if pluginState.Enable && !active {
- if err := a.PluginEnv.ActivatePlugin(id); err != nil {
- l4g.Error(err.Error())
+ if err := a.activatePlugin(plugin.Manifest); err != nil {
+ l4g.Error("%v plugin enabled in config.json but failing to activate err=%v", plugin.Manifest.Id, err.DetailedError)
continue
}
- if plugin.Manifest.HasClient() {
- message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PLUGIN_ACTIVATED, "", "", "", nil)
- message.Add("manifest", plugin.Manifest.ClientManifest())
- a.Publish(message)
- }
-
- l4g.Info("Activated %v plugin", id)
} else if !pluginState.Enable && active {
if err := a.deactivatePlugin(plugin.Manifest); err != nil {
l4g.Error(err.Error())
@@ -111,6 +104,21 @@ func (a *App) ActivatePlugins() {
}
}
+func (a *App) activatePlugin(manifest *model.Manifest) *model.AppError {
+ if err := a.PluginEnv.ActivatePlugin(manifest.Id); err != nil {
+ return model.NewAppError("activatePlugin", "app.plugin.activate.app_error", nil, err.Error(), http.StatusBadRequest)
+ }
+
+ if manifest.HasClient() {
+ message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PLUGIN_ACTIVATED, "", "", "", nil)
+ message.Add("manifest", manifest.ClientManifest())
+ a.Publish(message)
+ }
+
+ l4g.Info("Activated %v plugin", manifest.Id)
+ return nil
+}
+
func (a *App) deactivatePlugin(manifest *model.Manifest) *model.AppError {
if err := a.PluginEnv.DeactivatePlugin(manifest.Id); err != nil {
return model.NewAppError("removePlugin", "app.plugin.deactivate.app_error", nil, err.Error(), http.StatusBadRequest)
@@ -301,6 +309,10 @@ func (a *App) EnablePlugin(id string) *model.AppError {
return model.NewAppError("EnablePlugin", "app.plugin.not_installed.app_error", nil, "", http.StatusBadRequest)
}
+ if err := a.activatePlugin(manifest); err != nil {
+ return err
+ }
+
a.UpdateConfig(func(cfg *model.Config) {
cfg.PluginSettings.PluginStates[id] = &model.PluginState{Enable: true}
})