mirror of
https://github.com/grafana/grafana.git
synced 2025-08-06 04:19:26 +08:00
feat(cli): move cli into main repo
This commit is contained in:
61
pkg/cmd/grafana-cli/commands/upgrade_all_command.go
Normal file
61
pkg/cmd/grafana-cli/commands/upgrade_all_command.go
Normal file
@ -0,0 +1,61 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/log"
|
||||
m "github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
|
||||
services "github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
|
||||
"github.com/hashicorp/go-version"
|
||||
)
|
||||
|
||||
func ShouldUpgrade(installed string, remote m.Plugin) bool {
|
||||
installedVersion, err1 := version.NewVersion(installed)
|
||||
|
||||
if err1 != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
for _, v := range remote.Versions {
|
||||
remoteVersion, err2 := version.NewVersion(v.Version)
|
||||
|
||||
if err2 == nil {
|
||||
if installedVersion.LessThan(remoteVersion) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func upgradeAllCommand(c CommandLine) error {
|
||||
pluginDir := c.GlobalString("path")
|
||||
|
||||
localPlugins := services.GetLocalPlugins(pluginDir)
|
||||
|
||||
remotePlugins, err := services.ListAllPlugins()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pluginsToUpgrade := make([]m.InstalledPlugin, 0)
|
||||
|
||||
for _, localPlugin := range localPlugins {
|
||||
for _, remotePlugin := range remotePlugins.Plugins {
|
||||
if localPlugin.Id == remotePlugin.Id {
|
||||
if ShouldUpgrade(localPlugin.Info.Version, remotePlugin) {
|
||||
pluginsToUpgrade = append(pluginsToUpgrade, localPlugin)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, p := range pluginsToUpgrade {
|
||||
log.Infof("lets upgrade %v \n", p)
|
||||
|
||||
services.RemoveInstalledPlugin(pluginDir, p.Id)
|
||||
InstallPlugin(p.Id, pluginDir, "")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user