Jelajahi Sumber

tech(cli): remove loop and head straight for plugindir

bergquist 9 tahun lalu
induk
melakukan
af216ecf83

+ 9 - 7
pkg/cmd/grafana-cli/commands/remove_command.go

@@ -2,10 +2,10 @@ package commands
 
 
 import (
 import (
 	"errors"
 	"errors"
-
 	"fmt"
 	"fmt"
 	m "github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
 	m "github.com/grafana/grafana/pkg/cmd/grafana-cli/models"
 	services "github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
 	services "github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
+	"strings"
 )
 )
 
 
 var getPluginss func(path string) []m.InstalledPlugin = services.GetLocalPlugins
 var getPluginss func(path string) []m.InstalledPlugin = services.GetLocalPlugins
@@ -13,19 +13,21 @@ var removePlugin func(pluginPath, id string) error = services.RemoveInstalledPlu
 
 
 func removeCommand(c CommandLine) error {
 func removeCommand(c CommandLine) error {
 	pluginPath := c.PluginDirectory()
 	pluginPath := c.PluginDirectory()
-	localPlugins := getPluginss(pluginPath)
 
 
 	plugin := c.Args().First()
 	plugin := c.Args().First()
 	if plugin == "" {
 	if plugin == "" {
 		return errors.New("Missing plugin parameter")
 		return errors.New("Missing plugin parameter")
 	}
 	}
 
 
-	for _, p := range localPlugins {
-		if p.Id == c.Args().First() {
-			removePlugin(pluginPath, p.Id)
-			return nil
+	err := removePlugin(pluginPath, plugin)
+
+	if err != nil {
+		if strings.Contains(err.Error(), "no such file or directory") {
+			return fmt.Errorf("Plugin does not exist")
 		}
 		}
+
+		return err
 	}
 	}
 
 
-	return fmt.Errorf("Could not find plugin named %s", c.Args().First())
+	return nil
 }
 }

+ 10 - 3
pkg/cmd/grafana-cli/services/services.go

@@ -75,9 +75,16 @@ func GetLocalPlugins(pluginDir string) []m.InstalledPlugin {
 	return result
 	return result
 }
 }
 
 
-func RemoveInstalledPlugin(pluginPath, id string) error {
-	logger.Infof("Removing plugin: %v\n", id)
-	return IoHelper.RemoveAll(path.Join(pluginPath, id))
+func RemoveInstalledPlugin(pluginPath, pluginName string) error {
+	logger.Infof("Removing plugin: %v\n", pluginName)
+	pluginDir := path.Join(pluginPath, pluginName)
+
+	_, err := IoHelper.Stat(pluginDir)
+	if err != nil {
+		return err
+	}
+
+	return IoHelper.RemoveAll(pluginDir)
 }
 }
 
 
 func GetPlugin(pluginId, repoUrl string) (m.Plugin, error) {
 func GetPlugin(pluginId, repoUrl string) (m.Plugin, error) {