Skip to content

Commit

Permalink
fix: few versions
Browse files Browse the repository at this point in the history
Signed-off-by: Yasunori Fujie <fujie@ai2-jp.com>
  • Loading branch information
yacchi committed Aug 25, 2021
1 parent 7d293a3 commit c9fb9e4
Showing 1 changed file with 37 additions and 4 deletions.
41 changes: 37 additions & 4 deletions lib/tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"os"
"os/user"
"path/filepath"
"regexp"
"runtime"
"sort"
"strings"
Expand Down Expand Up @@ -75,6 +76,37 @@ func printGOPATH() {
fmt.Println(gopath)
}

var v0Regex = regexp.MustCompile(`^(\d+)\.(\d+)\.?(\d*)([\w\d]+)$`)

func NewGoVer(vs string) (*semver.Version, error) {
v, err := semver.NewVersion(vs)
if err == nil {
return v, nil
}
m := v0Regex.FindStringSubmatch(vs)
if 4 < len(m) {
patch := m[3]
if patch == "" {
patch = "0"
}
return semver.NewVersion(fmt.Sprintf("%s.%s.%s-%s", m[1], m[2], patch, m[4]))
}
return nil, err
}

func OriginalGoVersion(v *semver.Version) string {
if v.Patch() == 0 {
// ex. 1.17, 1.17rc1
return fmt.Sprintf("%d.%d%s", v.Major(), v.Minor(), v.Prerelease())
}
if v.Prerelease() != "" {
// ex. 1.9.2rc2
return fmt.Sprintf("%d.%d.%d%s", v.Major(), v.Minor(), v.Patch(), v.Prerelease())
}
// standard release version
return v.String()
}

func findVersions(node *html.Node) (ret semver.Collection) {
archiveSuffix := "." + runtime.GOOS + "-" + runtime.GOARCH
for elem := node.FirstChild; elem != nil; elem = elem.NextSibling {
Expand All @@ -86,7 +118,8 @@ func findVersions(node *html.Node) (ret semver.Collection) {
}
extPos := strings.Index(v.Val, archiveSuffix)
if strings.HasPrefix(v.Val, DownloadPrefix) && 0 < extPos {
if parsed, err := semver.NewVersion(v.Val[DownloadPrefixLen:extPos]); err != nil {
vStr := v.Val[DownloadPrefixLen:extPos]
if parsed, err := NewGoVer(vStr); err != nil {
continue
} else {
ret = append(ret, parsed)
Expand Down Expand Up @@ -133,12 +166,12 @@ func listSDKVersions() (sdkVers semver.Collection) {

func printSDKVersions() {
for _, v := range listSDKVersions() {
fmt.Println(v.Original())
fmt.Println(OriginalGoVersion(v))
}
}

func resolveVersion(v string) {
if _, err := semver.NewVersion(v); err == nil {
if _, err := NewGoVer(v); err == nil {
fmt.Println(v)
return
}
Expand All @@ -147,7 +180,7 @@ func resolveVersion(v string) {
sort.Sort(sort.Reverse(versions))
for _, v := range versions {
if c.Check(v) {
fmt.Println(v.Original())
fmt.Println(OriginalGoVersion(v))
return
}
}
Expand Down

0 comments on commit c9fb9e4

Please sign in to comment.