grafana/pkg/cmd/grafana-cli/utils/command_line.go
Will Browne 8e6205c107
Plugins: Move plugin installing + uninstalling logic from CLI to plugins package (#33274)
* move guts from cli to server

* renaming + refactoring

* add pluginsDir arg

* arg fixes

* add support for repo URL override

* add funcs to interface

* use pluginID consistently

* swap args

* pass mandatory grafanaVersion field

* introduce logger interface

* create central logger for CLI

* add infra log wrapper

* re-add log initer step

* remove unused logger

* add checks for uninstalling

* improve debug blue

* make sure to close file

* fix linter issues

* remove space

* improve newline usage

* refactor packaging

* improve logger API

* fix interface func names

* close file and reformat zipslip catch

* handle G305 linter warning

* add helpful debug log
2021-04-26 16:13:40 +02:00

64 lines
1.4 KiB
Go

package utils
import (
"os"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
"github.com/urfave/cli/v2"
)
type CommandLine interface {
ShowHelp() error
ShowVersion()
Application() *cli.App
Args() cli.Args
Bool(name string) bool
Int(name string) int
String(name string) string
StringSlice(name string) []string
FlagNames() (names []string)
Generic(name string) interface{}
PluginDirectory() string
PluginRepoURL() string
PluginURL() string
}
type ApiClient interface {
GetPlugin(pluginId, repoUrl string) (models.Plugin, error)
DownloadFile(pluginName string, tmpFile *os.File, url string, checksum string) (err error)
ListAllPlugins(repoUrl string) (models.PluginRepo, error)
}
type ContextCommandLine struct {
*cli.Context
}
func (c *ContextCommandLine) ShowHelp() error {
return cli.ShowCommandHelp(c.Context, c.Command.Name)
}
func (c *ContextCommandLine) ShowVersion() {
cli.ShowVersion(c.Context)
}
func (c *ContextCommandLine) Application() *cli.App {
return c.App
}
func (c *ContextCommandLine) HomePath() string { return c.String("homepath") }
func (c *ContextCommandLine) ConfigFile() string { return c.String("config") }
func (c *ContextCommandLine) PluginDirectory() string {
return c.String("pluginsDir")
}
func (c *ContextCommandLine) PluginRepoURL() string {
return c.String("repo")
}
func (c *ContextCommandLine) PluginURL() string {
return c.String("pluginUrl")
}