respect plugin manifest webapp bundle_path (#8393)

This commit is contained in:
Chris
2018-03-07 13:53:07 -06:00
committed by GitHub
parent e8943936c5
commit 03b6d1f652
2 changed files with 22 additions and 4 deletions

View File

@@ -164,6 +164,11 @@ func (m *Manifest) ClientManifest() *Manifest {
cm.Name = ""
cm.Description = ""
cm.Backend = nil
if cm.Webapp != nil {
cm.Webapp = new(ManifestWebapp)
*cm.Webapp = *m.Webapp
cm.Webapp.BundlePath = "/static/" + m.Id + "_bundle.js"
}
return cm
}

View File

@@ -8,6 +8,7 @@ import (
"fmt"
"io/ioutil"
"net/http"
"path/filepath"
"sync"
"github.com/pkg/errors"
@@ -163,12 +164,24 @@ func (env *Environment) ActivatePlugin(id string) error {
return fmt.Errorf("env missing webapp path, cannot activate plugin: %v", id)
}
webappBundle, err := ioutil.ReadFile(fmt.Sprintf("%s/%s/webapp/%s_bundle.js", env.searchPath, id, id))
bundlePath := filepath.Clean(bundle.Manifest.Webapp.BundlePath)
if bundlePath == "" || bundlePath[0] == '.' {
return fmt.Errorf("invalid webapp bundle path")
}
bundlePath = filepath.Join(env.searchPath, id, bundlePath)
webappBundle, err := ioutil.ReadFile(bundlePath)
if err != nil {
if supervisor != nil {
supervisor.Stop()
// Backwards compatibility for plugins where webapp.bundle_path was ignored. This should
// be removed eventually.
if webappBundle2, err2 := ioutil.ReadFile(fmt.Sprintf("%s/%s/webapp/%s_bundle.js", env.searchPath, id, id)); err2 == nil {
webappBundle = webappBundle2
} else {
if supervisor != nil {
supervisor.Stop()
}
return errors.Wrapf(err, "unable to read webapp bundle: %v", id)
}
return errors.Wrapf(err, "unable to read webapp bundle: %v", id)
}
err = ioutil.WriteFile(fmt.Sprintf("%s/%s_bundle.js", env.webappPath, id), webappBundle, 0644)