Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
30a8a38420
10 changed files with 86 additions and 34 deletions
|
@ -1160,6 +1160,7 @@
|
|||
"201": "Failed to purge data repo: %s",
|
||||
"202": "Cleaning data repo...",
|
||||
"203": "The data repo is purged, [%d] snapshots and [%d] data objects have been deleted, and a total of [%s] disk space has been released",
|
||||
"204": "The doc in the user guide does not support sharing to the community"
|
||||
"204": "The doc in the user guide does not support sharing to the community",
|
||||
"205": "The plugin is not supported in the current environment"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1160,6 +1160,7 @@
|
|||
"201": "Error al purgar el repositorio de datos: %s",
|
||||
"202": "Limpiando repositorio de datos...",
|
||||
"203": "El repositorio de datos se purgó, [%d] instantáneas y [%d] objetos de datos se eliminaron y se liberó un total de [%s] espacio en disco",
|
||||
"204": "La documentación en la guía del usuario no permite compartir con la comunidad"
|
||||
"204": "La documentación en la guía del usuario no permite compartir con la comunidad",
|
||||
"205": "El complemento no es compatible con el entorno actual"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1160,6 +1160,7 @@
|
|||
"201": "Échec de la purge du référentiel de données : %s",
|
||||
"202": "Nettoyage du référentiel de données...",
|
||||
"203": "Le référentiel de données est purgé, [%d] instantanés et [%d] objets de données ont été supprimés, et un total de [%s] espace disque a été libéré",
|
||||
"204": "La documentation du guide de l'utilisateur ne prend pas en charge le partage avec la communauté"
|
||||
"204": "La documentation du guide de l'utilisateur ne prend pas en charge le partage avec la communauté",
|
||||
"205": "Le plugin n'est pas pris en charge dans l'environnement actuel"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1160,6 +1160,7 @@
|
|||
"201": "清理數據倉庫失敗:%s",
|
||||
"202": "正在清理數據倉庫...",
|
||||
"203": "數據倉庫清理完畢,已刪除 [%d] 個快照和 [%d] 個數據對象,共釋放 [%s] 磁盤空間",
|
||||
"204": "用戶指南中的文檔不支持分享到社區"
|
||||
"204": "用戶指南中的文檔不支持分享到社區",
|
||||
"205": "該插件不支持在當前環境下使用"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1162,6 +1162,7 @@
|
|||
"201": "清理数据仓库失败:%s",
|
||||
"202": "正在清理数据仓库...",
|
||||
"203": "数据仓库清理完毕,已删除 [%d] 个快照和 [%d] 个数据对象,共释放 [%s] 磁盘空间",
|
||||
"204": "用户指南中的文档不支持分享到社区"
|
||||
"204": "用户指南中的文档不支持分享到社区",
|
||||
"205": "该插件不支持在当前环境下使用"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -110,16 +110,15 @@ func uninstallBazaarPlugin(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
frontend := arg["frontend"].(string)
|
||||
packageName := arg["packageName"].(string)
|
||||
err := model.UninstallBazaarPlugin(packageName)
|
||||
err := model.UninstallBazaarPlugin(packageName, frontend)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = err.Error()
|
||||
return
|
||||
}
|
||||
|
||||
frontend := arg["frontend"].(string)
|
||||
|
||||
ret.Data = map[string]interface{}{
|
||||
"packages": model.BazaarPlugins(frontend),
|
||||
}
|
||||
|
|
|
@ -29,7 +29,14 @@ func loadPetals(c *gin.Context) {
|
|||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
petals := model.LoadPetals()
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
frontend := arg["frontend"].(string)
|
||||
|
||||
petals := model.LoadPetals(frontend)
|
||||
ret.Data = petals
|
||||
}
|
||||
|
||||
|
@ -45,5 +52,12 @@ func setPetalEnabled(c *gin.Context) {
|
|||
packageName := arg["packageName"].(string)
|
||||
enabled := arg["enabled"].(bool)
|
||||
frontend := arg["frontend"].(string)
|
||||
ret.Data = model.SetPetalEnabled(packageName, enabled, frontend)
|
||||
data, err := model.SetPetalEnabled(packageName, enabled, frontend)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = err.Error()
|
||||
return
|
||||
}
|
||||
|
||||
ret.Data = data
|
||||
}
|
||||
|
|
|
@ -108,7 +108,39 @@ func Plugins(frontend string) (plugins []*Plugin) {
|
|||
return
|
||||
}
|
||||
|
||||
func InstalledPlugins(frontend string) (ret []*Plugin) {
|
||||
func IsIncompatibleInstalledPlugin(name, frontend string) (found, incompatible bool) {
|
||||
pluginsPath := filepath.Join(util.DataDir, "plugins")
|
||||
if !util.IsPathRegularDirOrSymlinkDir(pluginsPath) {
|
||||
return
|
||||
}
|
||||
|
||||
pluginDirs, err := os.ReadDir(pluginsPath)
|
||||
if nil != err {
|
||||
logging.LogWarnf("read plugins folder failed: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
for _, pluginDir := range pluginDirs {
|
||||
if !util.IsDirRegularOrSymlink(pluginDir) {
|
||||
continue
|
||||
}
|
||||
dirName := pluginDir.Name()
|
||||
if name != dirName {
|
||||
continue
|
||||
}
|
||||
|
||||
plugin, parseErr := PluginJSON(dirName)
|
||||
if nil != parseErr || nil == plugin {
|
||||
return
|
||||
}
|
||||
|
||||
found = true
|
||||
incompatible = isIncompatiblePlugin(plugin, frontend)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func InstalledPlugins(frontend string, checkUpdate bool) (ret []*Plugin) {
|
||||
ret = []*Plugin{}
|
||||
|
||||
pluginsPath := filepath.Join(util.DataDir, "plugins")
|
||||
|
@ -122,7 +154,10 @@ func InstalledPlugins(frontend string) (ret []*Plugin) {
|
|||
return
|
||||
}
|
||||
|
||||
bazaarPlugins := Plugins(frontend)
|
||||
var bazaarPlugins []*Plugin
|
||||
if checkUpdate {
|
||||
bazaarPlugins = Plugins(frontend)
|
||||
}
|
||||
|
||||
for _, pluginDir := range pluginDirs {
|
||||
if !util.IsDirRegularOrSymlink(pluginDir) {
|
||||
|
|
|
@ -50,7 +50,7 @@ func BazaarPlugins(frontend string) (plugins []*bazaar.Plugin) {
|
|||
}
|
||||
|
||||
func InstalledPlugins(frontend string) (plugins []*bazaar.Plugin) {
|
||||
plugins = bazaar.InstalledPlugins(frontend)
|
||||
plugins = bazaar.InstalledPlugins(frontend, true)
|
||||
|
||||
petals := getPetals()
|
||||
for _, plugin := range plugins {
|
||||
|
@ -71,7 +71,7 @@ func InstallBazaarPlugin(repoURL, repoHash, pluginName string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func UninstallBazaarPlugin(pluginName string) error {
|
||||
func UninstallBazaarPlugin(pluginName, frontend string) error {
|
||||
installPath := filepath.Join(util.DataDir, "plugins", pluginName)
|
||||
err := bazaar.UninstallPlugin(installPath)
|
||||
if nil != err {
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
|
@ -30,52 +31,50 @@ import (
|
|||
|
||||
// Petal represents a plugin's management status.
|
||||
type Petal struct {
|
||||
Name string `json:"name"` // Plugin name
|
||||
Enabled bool `json:"enabled"` // Whether enabled
|
||||
Name string `json:"name"` // Plugin name
|
||||
Enabled bool `json:"enabled"` // Whether enabled
|
||||
Incompatible bool `json:"incompatible"` // Whether incompatible
|
||||
|
||||
JS string `json:"js"` // JS code
|
||||
CSS string `json:"css"` // CSS code
|
||||
I18n map[string]interface{} `json:"i18n"` // i18n text
|
||||
}
|
||||
|
||||
func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal) {
|
||||
func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal, err error) {
|
||||
petals := getPetals()
|
||||
|
||||
plugins := bazaar.InstalledPlugins(frontend)
|
||||
var plugin *bazaar.Plugin
|
||||
for _, p := range plugins {
|
||||
if p.Name == name {
|
||||
plugin = p
|
||||
break
|
||||
}
|
||||
}
|
||||
if nil == plugin {
|
||||
found, incompatible := bazaar.IsIncompatibleInstalledPlugin(name, frontend)
|
||||
if !found {
|
||||
logging.LogErrorf("plugin [%s] not found", name)
|
||||
return
|
||||
}
|
||||
|
||||
ret = getPetalByName(plugin.Name, petals)
|
||||
ret = getPetalByName(name, petals)
|
||||
if nil == ret {
|
||||
ret = &Petal{
|
||||
Name: plugin.Name,
|
||||
Enabled: enabled,
|
||||
Name: name,
|
||||
}
|
||||
petals = append(petals, ret)
|
||||
} else {
|
||||
ret.Enabled = enabled
|
||||
}
|
||||
ret.Enabled = enabled
|
||||
ret.Incompatible = incompatible
|
||||
|
||||
if incompatible {
|
||||
err = fmt.Errorf(Conf.Language(205))
|
||||
return
|
||||
}
|
||||
|
||||
savePetals(petals)
|
||||
|
||||
loadCode(ret)
|
||||
return
|
||||
}
|
||||
|
||||
func LoadPetals() (ret []*Petal) {
|
||||
func LoadPetals(frontend string) (ret []*Petal) {
|
||||
ret = []*Petal{}
|
||||
petals := getPetals()
|
||||
for _, petal := range petals {
|
||||
if !petal.Enabled {
|
||||
_, petal.Incompatible = bazaar.IsIncompatibleInstalledPlugin(petal.Name, frontend)
|
||||
if !petal.Enabled || petal.Incompatible {
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue