mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
Plugins: Tidy up CLI code (#67723)
* remove dead code and use pkg/plugins for uninstall process * fix linter * remove unnecessary cruft
This commit is contained in:
parent
3644ea6556
commit
fd28c8490f
@ -10,7 +10,6 @@ import (
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/commands/datamigrations"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/commands/secretsmigrations"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
@ -91,47 +90,38 @@ func runPluginCommand(command func(commandLine utils.CommandLine) error) func(co
|
||||
}
|
||||
}
|
||||
|
||||
// Command contains command state.
|
||||
type Command struct {
|
||||
Client utils.ApiClient
|
||||
}
|
||||
|
||||
var cmd Command = Command{
|
||||
Client: &services.GrafanaComClient{},
|
||||
}
|
||||
|
||||
var pluginCommands = []*cli.Command{
|
||||
{
|
||||
Name: "install",
|
||||
Usage: "install <plugin id> <plugin version (optional)>",
|
||||
Action: runPluginCommand(cmd.installCommand),
|
||||
Action: runPluginCommand(installCommand),
|
||||
}, {
|
||||
Name: "list-remote",
|
||||
Usage: "list remote available plugins",
|
||||
Action: runPluginCommand(cmd.listRemoteCommand),
|
||||
Action: runPluginCommand(listRemoteCommand),
|
||||
}, {
|
||||
Name: "list-versions",
|
||||
Usage: "list-versions <plugin id>",
|
||||
Action: runPluginCommand(cmd.listVersionsCommand),
|
||||
Action: runPluginCommand(listVersionsCommand),
|
||||
}, {
|
||||
Name: "update",
|
||||
Usage: "update <plugin id>",
|
||||
Aliases: []string{"upgrade"},
|
||||
Action: runPluginCommand(cmd.upgradeCommand),
|
||||
Action: runPluginCommand(upgradeCommand),
|
||||
}, {
|
||||
Name: "update-all",
|
||||
Aliases: []string{"upgrade-all"},
|
||||
Usage: "update all your installed plugins",
|
||||
Action: runPluginCommand(cmd.upgradeAllCommand),
|
||||
Action: runPluginCommand(upgradeAllCommand),
|
||||
}, {
|
||||
Name: "ls",
|
||||
Usage: "list installed plugins (excludes core plugins)",
|
||||
Action: runPluginCommand(cmd.lsCommand),
|
||||
Action: runPluginCommand(lsCommand),
|
||||
}, {
|
||||
Name: "uninstall",
|
||||
Aliases: []string{"remove"},
|
||||
Usage: "uninstall <plugin id>",
|
||||
Action: runPluginCommand(cmd.removeCommand),
|
||||
Action: runPluginCommand(removeCommand),
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -1,36 +0,0 @@
|
||||
package commandstest
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
|
||||
)
|
||||
|
||||
type FakeGrafanaComClient struct {
|
||||
GetPluginFunc func(pluginId, repoUrl string) (models.Plugin, error)
|
||||
DownloadFileFunc func(pluginName string, tmpFile *os.File, url string, checksum string) (err error)
|
||||
ListAllPluginsFunc func(repoUrl string) (models.PluginRepo, error)
|
||||
}
|
||||
|
||||
func (client *FakeGrafanaComClient) GetPlugin(pluginID, repoUrl string) (models.Plugin, error) {
|
||||
if client.GetPluginFunc != nil {
|
||||
return client.GetPluginFunc(pluginID, repoUrl)
|
||||
}
|
||||
|
||||
return models.Plugin{}, nil
|
||||
}
|
||||
|
||||
func (client *FakeGrafanaComClient) DownloadFile(pluginName string, tmpFile *os.File, url string, checksum string) (err error) {
|
||||
if client.DownloadFileFunc != nil {
|
||||
return client.DownloadFileFunc(pluginName, tmpFile, url, checksum)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (client *FakeGrafanaComClient) ListAllPlugins(repoURL string) (models.PluginRepo, error) {
|
||||
if client.ListAllPluginsFunc != nil {
|
||||
return client.ListAllPluginsFunc(repoURL)
|
||||
}
|
||||
return models.PluginRepo{}, nil
|
||||
}
|
@ -49,7 +49,7 @@ func logRestartNotice() {
|
||||
logger.Info(color.GreenString("Please restart Grafana after installing or removing plugins. Refer to Grafana documentation for instructions if necessary.\n\n"))
|
||||
}
|
||||
|
||||
func (cmd Command) installCommand(c utils.CommandLine) error {
|
||||
func installCommand(c utils.CommandLine) error {
|
||||
pluginFolder := c.PluginDirectory()
|
||||
if err := validateInput(c, pluginFolder); err != nil {
|
||||
return err
|
||||
|
@ -2,13 +2,14 @@ package commands
|
||||
|
||||
import (
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
||||
)
|
||||
|
||||
// listRemoteCommand prints out all plugins in the remote repo with latest version supported on current platform.
|
||||
// If there are no supported versions for plugin it is skipped.
|
||||
func (cmd Command) listRemoteCommand(c utils.CommandLine) error {
|
||||
plugin, err := cmd.Client.ListAllPlugins(c.PluginRepoURL())
|
||||
func listRemoteCommand(c utils.CommandLine) error {
|
||||
plugin, err := services.ListAllPlugins(c.PluginRepoURL())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
||||
)
|
||||
|
||||
@ -16,14 +17,14 @@ func validateVersionInput(c utils.CommandLine) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cmd Command) listVersionsCommand(c utils.CommandLine) error {
|
||||
func listVersionsCommand(c utils.CommandLine) error {
|
||||
if err := validateVersionInput(c); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pluginToList := c.Args().First()
|
||||
|
||||
plugin, err := cmd.Client.GetPlugin(pluginToList, c.String("repo"))
|
||||
plugin, err := services.GetPlugin(pluginToList, c.String("repo"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ var validateLsCommand = func(pluginDir string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cmd Command) lsCommand(c utils.CommandLine) error {
|
||||
func lsCommand(c utils.CommandLine) error {
|
||||
pluginDir := c.PluginDirectory()
|
||||
if err := validateLsCommand(pluginDir); err != nil {
|
||||
return err
|
||||
|
@ -43,8 +43,7 @@ func TestMissingPath(t *testing.T) {
|
||||
c, err := commandstest.NewCliContext(tc.cliContext)
|
||||
require.NoError(t, err)
|
||||
|
||||
cmd := Command{}
|
||||
err = cmd.lsCommand(c)
|
||||
err = lsCommand(c)
|
||||
assert.Equal(t, tc.error, err)
|
||||
})
|
||||
}
|
||||
@ -66,8 +65,7 @@ func TestValidateLsCommand_override(t *testing.T) {
|
||||
return expected
|
||||
}
|
||||
|
||||
cmd := Command{}
|
||||
err = cmd.lsCommand(c)
|
||||
err = lsCommand(c)
|
||||
assert.Error(t, err)
|
||||
assert.Equal(t, expected, err, "can override validateLsCommand")
|
||||
})
|
||||
@ -77,8 +75,7 @@ func TestValidateLsCommand_override(t *testing.T) {
|
||||
c, err := commandstest.NewCliContext(map[string]string{"path": "/var/lib/grafana/plugins"})
|
||||
require.NoError(t, err)
|
||||
|
||||
cmd := Command{}
|
||||
err = cmd.lsCommand(c)
|
||||
err = lsCommand(c)
|
||||
assert.NotEqual(t, err, expected, "validateLsCommand is reset")
|
||||
})
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
||||
)
|
||||
|
||||
func (cmd Command) removeCommand(c utils.CommandLine) error {
|
||||
func removeCommand(c utils.CommandLine) error {
|
||||
pluginID := c.Args().First()
|
||||
if pluginID == "" {
|
||||
return errors.New("missing plugin parameter")
|
||||
|
@ -25,12 +25,12 @@ func shouldUpgrade(installed string, remote *models.Plugin) bool {
|
||||
return installedVersion.LessThan(latestVersion)
|
||||
}
|
||||
|
||||
func (cmd Command) upgradeAllCommand(c utils.CommandLine) error {
|
||||
func upgradeAllCommand(c utils.CommandLine) error {
|
||||
pluginsDir := c.PluginDirectory()
|
||||
|
||||
localPlugins := services.GetLocalPlugins(pluginsDir)
|
||||
|
||||
remotePlugins, err := cmd.Client.ListAllPlugins(c.String("repo"))
|
||||
remotePlugins, err := services.ListAllPlugins(c.String("repo"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
||||
)
|
||||
|
||||
func (cmd Command) upgradeCommand(c utils.CommandLine) error {
|
||||
func upgradeCommand(c utils.CommandLine) error {
|
||||
ctx := context.Background()
|
||||
pluginsDir := c.PluginDirectory()
|
||||
pluginID := c.Args().First()
|
||||
@ -21,7 +21,7 @@ func (cmd Command) upgradeCommand(c utils.CommandLine) error {
|
||||
return err
|
||||
}
|
||||
|
||||
plugin, err := cmd.Client.GetPlugin(pluginID, c.PluginRepoURL())
|
||||
plugin, err := services.GetPlugin(pluginID, c.PluginRepoURL())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -14,9 +14,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
|
||||
)
|
||||
|
||||
type GrafanaComClient struct{}
|
||||
|
||||
func (client *GrafanaComClient) GetPlugin(pluginId, repoUrl string) (models.Plugin, error) {
|
||||
func GetPlugin(pluginId, repoUrl string) (models.Plugin, error) {
|
||||
logger.Debugf("getting plugin metadata from: %v pluginId: %v \n", repoUrl, pluginId)
|
||||
body, err := sendRequestGetBytes(HttpClient, repoUrl, "repo", pluginId)
|
||||
if err != nil {
|
||||
@ -37,7 +35,7 @@ func (client *GrafanaComClient) GetPlugin(pluginId, repoUrl string) (models.Plug
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (client *GrafanaComClient) ListAllPlugins(repoUrl string) (models.PluginRepo, error) {
|
||||
func ListAllPlugins(repoUrl string) (models.PluginRepo, error) {
|
||||
body, err := sendRequestGetBytes(HttpClient, repoUrl, "repo")
|
||||
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user