ls_command.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package commands
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/fatih/color"
  6. "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
  7. m "github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
  8. s "github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
  9. "github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
  10. )
  11. var ls_getPlugins func(path string) []m.InstalledPlugin = s.GetLocalPlugins
  12. var validateLsCommand = func(pluginDir string) error {
  13. if pluginDir == "" {
  14. return errors.New("missing path flag")
  15. }
  16. logger.Debug("plugindir: " + pluginDir + "\n")
  17. pluginDirInfo, err := s.IoHelper.Stat(pluginDir)
  18. if err != nil {
  19. return fmt.Errorf("error: %s", err)
  20. }
  21. if !pluginDirInfo.IsDir() {
  22. return errors.New("plugin path is not a directory")
  23. }
  24. return nil
  25. }
  26. func lsCommand(c utils.CommandLine) error {
  27. pluginDir := c.PluginDirectory()
  28. if err := validateLsCommand(pluginDir); err != nil {
  29. return err
  30. }
  31. plugins := ls_getPlugins(pluginDir)
  32. if len(plugins) > 0 {
  33. logger.Info("installed plugins:\n")
  34. }
  35. for _, plugin := range plugins {
  36. logger.Infof("%s %s %s \n", plugin.Id, color.YellowString("@"), plugin.Info.Version)
  37. }
  38. return nil
  39. }