Files
Syerikjan Kh b38662e985 Plugins: Add preinstall_sync config - allow plugins to be preinstalled synchronously (#105292)
* feat: preinstall_sync config - process and installation logic

* ref: add preinstall_sync list to preinstalled plugins of frontendsettings

* fix: conf blank line for sections

* ref: remove plugins async flag, and rename PreinstallPlugins

* docs: default installed plugin list
2025-05-16 10:45:50 -04:00

37 lines
735 B
Go

package pluginchecker
import "github.com/grafana/grafana/pkg/setting"
type Preinstall interface {
IsPreinstalled(pluginID string) bool
IsPinned(pluginID string) bool
}
func ProvidePreinstall(
cfg *setting.Cfg,
) *PreinstallImpl {
plugins := make(map[string]*setting.InstallPlugin)
for _, p := range cfg.PreinstallPluginsAsync {
plugins[p.ID] = &p
}
return &PreinstallImpl{
plugins: plugins,
}
}
type PreinstallImpl struct {
plugins map[string]*setting.InstallPlugin
}
func (c *PreinstallImpl) IsPreinstalled(pluginID string) bool {
_, ok := c.plugins[pluginID]
return ok
}
func (c *PreinstallImpl) IsPinned(pluginID string) bool {
if p, ok := c.plugins[pluginID]; ok {
return p.Version != ""
}
return false
}