From 55c790f069ce39ad9cbcf29c519526b086ec3336 Mon Sep 17 00:00:00 2001 From: Florian Sundermann Date: Tue, 27 Sep 2016 13:26:11 +0200 Subject: [PATCH] more tolerant version parsing --- cmd/micro/pluginmanager.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cmd/micro/pluginmanager.go b/cmd/micro/pluginmanager.go index 43296473..6e97a0ed 100644 --- a/cmd/micro/pluginmanager.go +++ b/cmd/micro/pluginmanager.go @@ -27,6 +27,9 @@ var ( allPluginPackages PluginPackages = nil ) +// CorePluginName is a plugin dependency name for the micro core. +const CorePluginName = "micro" + // PluginChannel contains an url to a json list of PluginRepository type PluginChannel string @@ -252,9 +255,12 @@ func SearchPlugin(text string) (plugins PluginPackages) { } func newStaticPluginVersion(name, version string) *PluginVersion { - vers, err := semver.Parse(version) + vers, err := semver.ParseTolerant(version) + if err != nil { - return nil + if vers, err = semver.ParseTolerant("0.0.0-" + version); err != nil { + vers = semver.MustParse("0.0.0-unknown") + } } pl := &PluginPackage{ Name: name, @@ -271,7 +277,7 @@ func newStaticPluginVersion(name, version string) *PluginVersion { // micro itself. This can be used to resolve dependencies. func GetInstalledVersions() PluginVersions { result := PluginVersions{ - newStaticPluginVersion("micro", Version), + newStaticPluginVersion(CorePluginName, Version), } for _, name := range loadedPlugins { @@ -419,9 +425,9 @@ func (all PluginPackages) Resolve(selectedVersions PluginVersions, open PluginDe func (versions PluginVersions) install() { anyInstalled := false for _, sel := range versions { - if sel.pack.Name != "micro" { + if sel.pack.Name != CorePluginName { installed := GetInstalledPluginVersion(sel.pack.Name) - if v, err := semver.Parse(installed); err != nil || v.NE(sel.Version) { + if v, err := semver.ParseTolerant(installed); err != nil || v.NE(sel.Version) { UninstallPlugin(sel.pack.Name) } if err := sel.DownloadAndInstall(); err != nil { @@ -458,7 +464,7 @@ func (pl PluginPackage) Install() { func UpdatePlugins() { microVersion := PluginVersions{ - newStaticPluginVersion("micro", Version), + newStaticPluginVersion(CorePluginName, Version), } var updates = make(PluginDependencies, 0)