mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-30 06:37:14 +09:00
PM should not install already installed plugins.
This commit is contained in:
@@ -320,6 +320,7 @@ func GetInstalledPluginVersion(name string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (pv *PluginVersion) DownloadAndInstall() error {
|
func (pv *PluginVersion) DownloadAndInstall() error {
|
||||||
|
messenger.AddLog(fmt.Sprintf("Downloading %q (%s) from %q", pv.pack.Name, pv.Version, pv.Url))
|
||||||
resp, err := http.Get(pv.Url)
|
resp, err := http.Get(pv.Url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -440,17 +441,27 @@ func (all PluginPackages) Resolve(selectedVersions PluginVersions, open PluginDe
|
|||||||
|
|
||||||
func (versions PluginVersions) install() {
|
func (versions PluginVersions) install() {
|
||||||
anyInstalled := false
|
anyInstalled := false
|
||||||
|
currentlyInstalled := GetInstalledVersions()
|
||||||
|
|
||||||
for _, sel := range versions {
|
for _, sel := range versions {
|
||||||
if sel.pack.Name != CorePluginName {
|
if sel.pack.Name != CorePluginName {
|
||||||
installed := GetInstalledPluginVersion(sel.pack.Name)
|
shouldInstall := true
|
||||||
if v, err := semver.ParseTolerant(installed); err != nil || v.NE(sel.Version) {
|
if pv := currentlyInstalled.find(sel.pack.Name); pv != nil {
|
||||||
UninstallPlugin(sel.pack.Name)
|
if pv.Version.NE(sel.Version) {
|
||||||
|
messenger.AddLog(fmt.Sprint("Uninstalling %q", sel.pack.Name))
|
||||||
|
UninstallPlugin(sel.pack.Name)
|
||||||
|
} else {
|
||||||
|
shouldInstall = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err := sel.DownloadAndInstall(); err != nil {
|
|
||||||
messenger.Error(err)
|
if shouldInstall {
|
||||||
return
|
if err := sel.DownloadAndInstall(); err != nil {
|
||||||
|
messenger.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
anyInstalled = true
|
||||||
}
|
}
|
||||||
anyInstalled = true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if anyInstalled {
|
if anyInstalled {
|
||||||
|
|||||||
Reference in New Issue
Block a user