Adding support for code split plugins. (#9184)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
8766690c81
Коммит
82dfe9e61d
@@ -188,7 +188,7 @@ func (m *Manifest) ClientManifest() *Manifest {
|
|||||||
if cm.Webapp != nil {
|
if cm.Webapp != nil {
|
||||||
cm.Webapp = new(ManifestWebapp)
|
cm.Webapp = new(ManifestWebapp)
|
||||||
*cm.Webapp = *m.Webapp
|
*cm.Webapp = *m.Webapp
|
||||||
cm.Webapp.BundlePath = "/static/" + m.Id + "_bundle.js"
|
cm.Webapp.BundlePath = "/static/" + m.Id + "/" + m.Id + "_bundle.js"
|
||||||
}
|
}
|
||||||
return cm
|
return cm
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ package plugin
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/mattermost/mattermost-server/mlog"
|
"github.com/mattermost/mattermost-server/mlog"
|
||||||
"github.com/mattermost/mattermost-server/model"
|
"github.com/mattermost/mattermost-server/model"
|
||||||
|
"github.com/mattermost/mattermost-server/utils"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -172,15 +174,21 @@ func (env *Environment) Activate(id string) (reterr error) {
|
|||||||
return fmt.Errorf("invalid webapp bundle path")
|
return fmt.Errorf("invalid webapp bundle path")
|
||||||
}
|
}
|
||||||
bundlePath = filepath.Join(env.pluginDir, id, bundlePath)
|
bundlePath = filepath.Join(env.pluginDir, id, bundlePath)
|
||||||
|
destinationPath := filepath.Join(env.webappPluginDir, id)
|
||||||
|
|
||||||
webappBundle, err := ioutil.ReadFile(bundlePath)
|
if err := os.RemoveAll(destinationPath); err != nil {
|
||||||
if err != nil {
|
return errors.Wrapf(err, "unable to remove old webapp bundle directory: %v", destinationPath)
|
||||||
return errors.Wrapf(err, "unable to read webapp bundle: %v", id)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ioutil.WriteFile(fmt.Sprintf("%s/%s_bundle.js", env.webappPluginDir, id), webappBundle, 0644)
|
if err := utils.CopyDir(filepath.Dir(bundlePath), destinationPath); err != nil {
|
||||||
if err != nil {
|
return errors.Wrapf(err, "unable to copy webapp bundle directory: %v", id)
|
||||||
return errors.Wrapf(err, "unable to write webapp bundle: %v", id)
|
}
|
||||||
|
|
||||||
|
if err := os.Rename(
|
||||||
|
filepath.Join(destinationPath, filepath.Base(bundlePath)),
|
||||||
|
filepath.Join(destinationPath, fmt.Sprintf("%s_bundle.js", id)),
|
||||||
|
); err != nil {
|
||||||
|
return errors.Wrapf(err, "unable to rename webapp bundle: %v", id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package web
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"mime"
|
||||||
"net/http"
|
"net/http"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -26,6 +27,8 @@ func (w *Web) InitStatic() {
|
|||||||
|
|
||||||
subpath, _ := utils.GetSubpathFromConfig(w.App.Config())
|
subpath, _ := utils.GetSubpathFromConfig(w.App.Config())
|
||||||
|
|
||||||
|
mime.AddExtensionType(".wasm", "application/wasm")
|
||||||
|
|
||||||
staticHandler := staticHandler(http.StripPrefix(path.Join(subpath, "static"), http.FileServer(http.Dir(staticDir))))
|
staticHandler := staticHandler(http.StripPrefix(path.Join(subpath, "static"), http.FileServer(http.Dir(staticDir))))
|
||||||
pluginHandler := pluginHandler(w.App.Config, http.StripPrefix(path.Join(subpath, "static", "plugins"), http.FileServer(http.Dir(*w.App.Config().PluginSettings.ClientDirectory))))
|
pluginHandler := pluginHandler(w.App.Config, http.StripPrefix(path.Join(subpath, "static", "plugins"), http.FileServer(http.Dir(*w.App.Config().PluginSettings.ClientDirectory))))
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user