ls_command.go 1015 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package commands
  2. import (
  3. "errors"
  4. "github.com/grafana/grafana/pkg/cmd/grafana-cli/log"
  5. m "github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
  6. s "github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
  7. )
  8. var getPlugins func(path string) []m.InstalledPlugin
  9. var GetStat m.IoUtil
  10. func init() {
  11. getPlugins = s.GetLocalPlugins
  12. GetStat = s.IoUtil
  13. }
  14. func validateCommand(pluginDir string) error {
  15. if pluginDir == "" {
  16. return errors.New("missing path flag")
  17. }
  18. log.Info("plugindir: " + pluginDir + "\n")
  19. pluginDirInfo, err := GetStat.Stat(pluginDir)
  20. if err != nil {
  21. return errors.New("missing path flag")
  22. }
  23. if pluginDirInfo.IsDir() == false {
  24. return errors.New("plugin path is not a directory")
  25. }
  26. return nil
  27. }
  28. func lsCommand(c CommandLine) error {
  29. pluginDir := c.GlobalString("path")
  30. if err := validateCommand(pluginDir); err != nil {
  31. return err
  32. }
  33. for _, plugin := range getPlugins(pluginDir) {
  34. log.Infof("plugin: %s @ %s \n", plugin.Name, plugin.Info.Version)
  35. }
  36. return nil
  37. }