|
|
@ -1,16 +1,20 @@ |
|
|
package semver |
|
|
package semver |
|
|
|
|
|
|
|
|
import ( |
|
|
import ( |
|
|
"bytes" |
|
|
|
|
|
"errors" |
|
|
"errors" |
|
|
"fmt" |
|
|
"fmt" |
|
|
"strconv" |
|
|
"strconv" |
|
|
"strings" |
|
|
"strings" |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
const numbers = "0123456789" |
|
|
|
|
|
const alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-" |
|
|
|
|
|
const alphanum = alphas + numbers |
|
|
|
|
|
|
|
|
const ( |
|
|
|
|
|
numbers string = "0123456789" |
|
|
|
|
|
alphas string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-" |
|
|
|
|
|
alphanum string = alphas + numbers |
|
|
|
|
|
DOT string = "." |
|
|
|
|
|
HYPHEN string = "-" |
|
|
|
|
|
PLUS string = "+" |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
// Latest fully supported spec version
|
|
|
// Latest fully supported spec version
|
|
|
var SPEC_VERSION = Version{ |
|
|
var SPEC_VERSION = Version{ |
|
|
@ -29,34 +33,26 @@ type Version struct { |
|
|
|
|
|
|
|
|
// Version to string
|
|
|
// Version to string
|
|
|
func (v *Version) String() string { |
|
|
func (v *Version) String() string { |
|
|
var buf bytes.Buffer |
|
|
|
|
|
var DOT = []byte(".") |
|
|
|
|
|
var HYPHEN = []byte("-") |
|
|
|
|
|
var PLUS = []byte("+") |
|
|
|
|
|
buf.WriteString(strconv.FormatUint(v.Major, 10)) |
|
|
|
|
|
buf.Write(DOT) |
|
|
|
|
|
buf.WriteString(strconv.FormatUint(v.Minor, 10)) |
|
|
|
|
|
buf.Write(DOT) |
|
|
|
|
|
buf.WriteString(strconv.FormatUint(v.Patch, 10)) |
|
|
|
|
|
|
|
|
versionArray := []string{ |
|
|
|
|
|
strconv.FormatUint(v.Major, 10), |
|
|
|
|
|
DOT, |
|
|
|
|
|
strconv.FormatUint(v.Minor, 10), |
|
|
|
|
|
DOT, |
|
|
|
|
|
strconv.FormatUint(v.Patch, 10), |
|
|
|
|
|
} |
|
|
if len(v.Pre) > 0 { |
|
|
if len(v.Pre) > 0 { |
|
|
buf.Write(HYPHEN) |
|
|
|
|
|
|
|
|
versionArray = append(versionArray, HYPHEN) |
|
|
for i, pre := range v.Pre { |
|
|
for i, pre := range v.Pre { |
|
|
if i > 0 { |
|
|
if i > 0 { |
|
|
buf.Write(DOT) |
|
|
|
|
|
|
|
|
versionArray = append(versionArray, DOT) |
|
|
} |
|
|
} |
|
|
buf.WriteString(pre.String()) |
|
|
|
|
|
|
|
|
versionArray = append(versionArray, pre.String()) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if len(v.Build) > 0 { |
|
|
if len(v.Build) > 0 { |
|
|
buf.Write(PLUS) |
|
|
|
|
|
for i, build := range v.Build { |
|
|
|
|
|
if i > 0 { |
|
|
|
|
|
buf.Write(DOT) |
|
|
|
|
|
} |
|
|
|
|
|
buf.WriteString(build) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
versionArray = append(versionArray, PLUS, strings.Join(v.Build, DOT)) |
|
|
} |
|
|
} |
|
|
return buf.String() |
|
|
|
|
|
|
|
|
return strings.Join(versionArray, "") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Checks if v is greater than o.
|
|
|
// Checks if v is greater than o.
|
|
|
|