]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/pluginmanager.go
Merge pull request #1135 from whilei/gofmt-2018-Jun-17-00-39
[micro.git] / cmd / micro / pluginmanager.go
index 8909a278ff8d140b63eb0342ff421fad1ef1e74d..ad7843e654cc241132ad3f1a52bc5426002d5ee0 100644 (file)
@@ -14,8 +14,8 @@ import (
        "sync"
 
        "github.com/blang/semver"
+       "github.com/flynn/json5"
        "github.com/yuin/gopher-lua"
-       "github.com/zyedidia/json5/encoding/json5"
 )
 
 var (
@@ -358,8 +358,8 @@ func GetInstalledVersions(withCore bool) PluginVersions {
                result = append(result, newStaticPluginVersion(CorePluginName, Version))
        }
 
-       for _, name := range loadedPlugins {
-               version := GetInstalledPluginVersion(name)
+       for name, lpname := range loadedPlugins {
+               version := GetInstalledPluginVersion(lpname)
                if pv := newStaticPluginVersion(name, version); pv != nil {
                        result = append(result, pv)
                }
@@ -422,6 +422,7 @@ func (pv *PluginVersion) DownloadAndInstall() error {
                }
        }
 
+       // Install files and directory's
        for _, f := range z.File {
                parts := strings.Split(f.Name, "/")
                if allPrefixed {
@@ -434,6 +435,12 @@ func (pv *PluginVersion) DownloadAndInstall() error {
                                return err
                        }
                } else {
+                       basepath := filepath.Dir(targetName)
+
+                       if err := os.MkdirAll(basepath, dirPerm); err != nil {
+                               return err
+                       }
+
                        content, err := f.Open()
                        if err != nil {
                                return err
@@ -534,7 +541,7 @@ func (pv PluginVersions) install() {
                        shouldInstall := true
                        if pv := currentlyInstalled.find(sel.pack.Name); pv != nil {
                                if pv.Version.NE(sel.Version) {
-                                       messenger.AddLog(fmt.Sprint("Uninstalling %q", sel.pack.Name))
+                                       messenger.AddLog("Uninstalling", sel.pack.Name)
                                        UninstallPlugin(sel.pack.Name)
                                } else {
                                        shouldInstall = false
@@ -561,7 +568,9 @@ func (pv PluginVersions) install() {
 func UninstallPlugin(name string) {
        if err := os.RemoveAll(filepath.Join(configDir, "plugins", name)); err != nil {
                messenger.Error(err)
+               return
        }
+       delete(loadedPlugins, name)
 }
 
 // Install installs the plugin
@@ -582,7 +591,9 @@ func (pl PluginPackage) Install() {
 func UpdatePlugins(plugins []string) {
        // if no plugins are specified, update all installed plugins.
        if len(plugins) == 0 {
-               plugins = loadedPlugins
+               for name := range loadedPlugins {
+                       plugins = append(plugins, name)
+               }
        }
 
        messenger.AddLog("Checking for plugin updates")