Implement semver_minor and semver_patch
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -13,10 +14,10 @@ type VersioningMode interface {
|
|||||||
ShouldUpdate(currentTag string, availableTags []Tag) *Tag
|
ShouldUpdate(currentTag string, availableTags []Tag) *Tag
|
||||||
}
|
}
|
||||||
|
|
||||||
type SameTag struct {}
|
type SameTag struct{}
|
||||||
type SemVerMajor struct {}
|
type SemVerMajor struct{}
|
||||||
type SemVerMinor struct {}
|
type SemVerMinor struct{}
|
||||||
type SemVerPatch struct {}
|
type SemVerPatch struct{}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
AllModes = [...]VersioningMode{
|
AllModes = [...]VersioningMode{
|
||||||
@ -29,11 +30,11 @@ var (
|
|||||||
|
|
||||||
func (SameTag) Label() string { return "same_tag" }
|
func (SameTag) Label() string { return "same_tag" }
|
||||||
func (SameTag) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
func (SameTag) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
||||||
|
fmt.Println("Not implemented: 'same_tag' versioning mode")
|
||||||
return nil // TODO: implement me
|
return nil // TODO: implement me
|
||||||
}
|
}
|
||||||
|
|
||||||
func (SemVerMajor) Label() string { return "semver_major" }
|
func semVerShouldUpdate(currentTag string, availableTags []Tag, isValid func(current, available SemVerTag) bool) *Tag {
|
||||||
func (SemVerMajor) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
|
||||||
currentSemVer := parseTagAsSemVer(currentTag)
|
currentSemVer := parseTagAsSemVer(currentTag)
|
||||||
if currentSemVer == nil {
|
if currentSemVer == nil {
|
||||||
return nil
|
return nil
|
||||||
@ -42,8 +43,8 @@ func (SemVerMajor) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
|||||||
semverTags := make([]Tag, 0)
|
semverTags := make([]Tag, 0)
|
||||||
|
|
||||||
for _, tag := range availableTags {
|
for _, tag := range availableTags {
|
||||||
if tag.SemVer != nil && currentSemVer.version.LessThan(tag.SemVer.version) {
|
if tag.SemVer != nil && isValid(*currentSemVer, *tag.SemVer) {
|
||||||
semverTags = append(semverTags, tag);
|
semverTags = append(semverTags, tag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,17 +61,33 @@ func (SemVerMajor) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
|||||||
return &semverTags[0]
|
return &semverTags[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (SemVerMajor) Label() string { return "semver_major" }
|
||||||
|
func (SemVerMajor) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
||||||
|
return semVerShouldUpdate(currentTag, availableTags, func(current, available SemVerTag) bool {
|
||||||
|
// The new version should be greater
|
||||||
|
return current.version.LessThan(available.version)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (SemVerMinor) Label() string { return "semver_minor" }
|
func (SemVerMinor) Label() string { return "semver_minor" }
|
||||||
func (SemVerMinor) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
func (SemVerMinor) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
||||||
return nil // TODO: implement me
|
return semVerShouldUpdate(currentTag, availableTags, func(current, available SemVerTag) bool {
|
||||||
|
// The new version should be greater, but still the same major number
|
||||||
|
return current.version.LessThan(available.version) &&
|
||||||
|
current.version.Major == available.version.Major
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (SemVerPatch) Label() string { return "semver_patch" }
|
func (SemVerPatch) Label() string { return "semver_patch" }
|
||||||
func (SemVerPatch) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
func (SemVerPatch) ShouldUpdate(currentTag string, availableTags []Tag) *Tag {
|
||||||
return nil // TODO: implement me
|
return semVerShouldUpdate(currentTag, availableTags, func(current, available SemVerTag) bool {
|
||||||
|
// The new version should be greater, but still the same major & minor number
|
||||||
|
return current.version.LessThan(available.version) &&
|
||||||
|
current.version.Major == available.version.Major &&
|
||||||
|
current.version.Minor == available.version.Minor
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func ParseVersioningMode(input string) *VersioningMode {
|
func ParseVersioningMode(input string) *VersioningMode {
|
||||||
for _, mode := range AllModes {
|
for _, mode := range AllModes {
|
||||||
if mode.Label() == input {
|
if mode.Label() == input {
|
||||||
@ -79,4 +96,3 @@ func ParseVersioningMode(input string) *VersioningMode {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user