mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-30 06:37:14 +09:00
Resolve versions in plugin manager
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package manager
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/blang/semver"
|
||||
"github.com/zyedidia/micro/internal/config"
|
||||
"github.com/zyedidia/micro/internal/util"
|
||||
git "gopkg.in/src-d/go-git.v4"
|
||||
)
|
||||
|
||||
@@ -56,11 +58,26 @@ func (i *PluginInfo) FetchRepo() error {
|
||||
}
|
||||
|
||||
func (p *Plugin) ResolveVersion() error {
|
||||
return nil
|
||||
i := p.info
|
||||
vs := i.Versions
|
||||
|
||||
for _, v := range vs {
|
||||
microrange, err := semver.ParseRange(v.Require["micro"])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if microrange(util.SemVersion) {
|
||||
p.version = v.Vers
|
||||
fmt.Println("resolve version to ", v.Vstr)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return ErrRequireUnsat
|
||||
}
|
||||
|
||||
func (p *Plugin) WriteVersion() error {
|
||||
return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), os.ModePerm)
|
||||
return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), 0644)
|
||||
}
|
||||
|
||||
func (p *Plugin) FetchDeps() error {
|
||||
|
||||
@@ -3,11 +3,15 @@ package manager
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/blang/semver"
|
||||
"github.com/zyedidia/micro/internal/config"
|
||||
"github.com/zyedidia/micro/internal/util"
|
||||
)
|
||||
|
||||
func init() {
|
||||
config.InitConfigDir("./")
|
||||
util.Version = "1.3.1"
|
||||
util.SemVersion, _ = semver.Make(util.Version)
|
||||
}
|
||||
|
||||
var sampleJson = []byte(`{
|
||||
@@ -47,17 +51,17 @@ func TestParse(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// func TestFetch(t *testing.T) {
|
||||
// i, err := NewPluginInfoFromUrl("http://zbyedidia.webfactional.com/micro/test.json")
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
//
|
||||
// err = i.FetchRepo()
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
// }
|
||||
func TestFetch(t *testing.T) {
|
||||
i, err := NewPluginInfoFromUrl("http://zbyedidia.webfactional.com/micro/test.json")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
err = i.FetchRepo()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
// func TestList(t *testing.T) {
|
||||
// is, err := ListInstalledPlugins()
|
||||
|
||||
@@ -20,6 +20,7 @@ var (
|
||||
ErrMissingVersions = errors.New("Missing or empty versions field")
|
||||
ErrMissingTag = errors.New("Missing or empty tag field")
|
||||
ErrMissingRequire = errors.New("Missing or empty require field")
|
||||
ErrRequireUnsat = errors.New("Version require could not be satisfied")
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -95,12 +96,12 @@ func (i *PluginInfo) makeVersions() error {
|
||||
return ErrMissingVersions
|
||||
}
|
||||
|
||||
for _, v := range i.Versions {
|
||||
for j, v := range i.Versions {
|
||||
sv, err := semver.Make(v.Vstr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
v.Vers = sv
|
||||
i.Versions[j].Vers = sv
|
||||
if len(v.Tag) == 0 {
|
||||
return ErrMissingTag
|
||||
} else if v.Require == nil {
|
||||
|
||||
@@ -2,6 +2,7 @@ package util
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
@@ -11,9 +12,33 @@ import (
|
||||
"time"
|
||||
"unicode/utf8"
|
||||
|
||||
"github.com/blang/semver"
|
||||
runewidth "github.com/mattn/go-runewidth"
|
||||
)
|
||||
|
||||
var (
|
||||
// These variables should be set by the linker when compiling
|
||||
|
||||
// Version is the version number or commit hash
|
||||
Version = "0.0.0-unknown"
|
||||
// Semantic version
|
||||
SemVersion semver.Version
|
||||
// CommitHash is the commit this version was built on
|
||||
CommitHash = "Unknown"
|
||||
// CompileDate is the date this binary was compiled on
|
||||
CompileDate = "Unknown"
|
||||
// Debug logging
|
||||
Debug = "ON"
|
||||
)
|
||||
|
||||
func init() {
|
||||
var err error
|
||||
SemVersion, err = semver.Make(Version)
|
||||
if err != nil {
|
||||
fmt.Println("Invalid version: ", Version, err)
|
||||
}
|
||||
}
|
||||
|
||||
// SliceEnd returns a byte slice where the index is a rune index
|
||||
// Slices off the start of the slice
|
||||
func SliceEnd(slc []byte, index int) []byte {
|
||||
|
||||
Reference in New Issue
Block a user