func pluginDelete(c *cli.Context) error { // Input validation if len(c.Args()) == 0 { log.Fatal("Missing plugin name") } name := c.Args()[0] if name == "" { log.Fatal("Missing plugin name") } if _, found, err := plugins.LoadPlugin(name); err != nil { log.Fatalf("Failed to check if plugin (%s) installed, error: %s", name, err) } else if !found { log.Fatalf("Plugin (%s) is not installed", name) } versionPtr, err := plugins.GetPluginVersion(name) if err != nil { log.Fatalf("Failed to read plugin (%s) version, error: %s", name, err) } // Delete version := "local" if versionPtr != nil { version = versionPtr.String() } log.Infof("=> Deleting plugin (%s) with version (%s) ...", name, version) if err := plugins.DeletePlugin(name); err != nil { log.Fatalf("Failed to delete plugin (%s) with version (%s), error: %s", name, version, err) } fmt.Println() log.Infof(colorstring.Greenf("Plugin (%s) with version (%s) deleted", name, version)) return nil }
// CheckIsPluginInstalled ... func CheckIsPluginInstalled(name string, dependency PluginDependency) error { _, found, err := plugins.LoadPlugin(name) if err != nil { return err } currentVersion := "" installOrUpdate := false if !found { fmt.Println() log.Warnf("Default plugin (%s) NOT found.", name) fmt.Println() fmt.Print("Installing...") installOrUpdate = true currentVersion = dependency.MinVersion } else { installedVersion, err := plugins.GetPluginVersion(name) if err != nil { return err } if installedVersion == nil { fmt.Println() log.Warnf("Default plugin (%s) is not installed from git, no version info available.", name) fmt.Println() currentVersion = "local" } else { currentVersion = installedVersion.String() minVersion, err := ver.NewVersion(dependency.MinVersion) if err != nil { return err } if installedVersion.LessThan(minVersion) { fmt.Println() log.Warnf("Default plugin (%s) version (%s) is lower than required (%s).", name, installedVersion.String(), minVersion.String()) fmt.Println() log.Infoln("Updating...") installOrUpdate = true currentVersion = dependency.MinVersion } } } if installOrUpdate { var plugin plugins.Plugin err := progress.SimpleProgressE(".", 2*time.Second, func() error { return retry.Times(2).Wait(5 * time.Second).Try(func(attempt uint) error { if attempt > 0 { fmt.Println() fmt.Print("==> Download failed, retrying ...") } p, _, err := plugins.InstallPlugin(dependency.Source, dependency.Binary, dependency.MinVersion) plugin = p return err }) }) fmt.Println() if err != nil { return fmt.Errorf("Failed to install plugin, error: %s", err) } if len(plugin.Description) > 0 { fmt.Println() fmt.Println(plugin.Description) fmt.Println() } } pluginDir := plugins.GetPluginDir(name) log.Infof(" * %s Plugin (%s) : %s", colorstring.Green("[OK]"), name, pluginDir) log.Infof(" version : %s", currentVersion) return nil }