Move SemVerTag to its own package
This commit is contained in:
38
internal/pkg/semver/parsing.go
Normal file
38
internal/pkg/semver/parsing.go
Normal file
@ -0,0 +1,38 @@
|
||||
package semver
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
|
||||
"github.com/coreos/go-semver/semver"
|
||||
)
|
||||
|
||||
var (
|
||||
rxSemVerPrefix = regexp.MustCompile(`^[^\d]*`)
|
||||
)
|
||||
|
||||
// Returns nil if the tag did not parse as semver
|
||||
func ParseTagAsSemVer(dockerTag string) *Tag {
|
||||
var prefix string
|
||||
loc := rxSemVerPrefix.FindStringIndex(dockerTag)
|
||||
if loc != nil {
|
||||
prefix = dockerTag[:loc[1]]
|
||||
dockerTag = dockerTag[loc[1]:]
|
||||
}
|
||||
|
||||
version, err := semver.NewVersion(dockerTag)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
svt := Tag{
|
||||
prefix,
|
||||
*version,
|
||||
}
|
||||
|
||||
return &svt
|
||||
}
|
||||
|
||||
func (svt Tag) String() string {
|
||||
return fmt.Sprintf("%s%s", svt.Prefix, svt.Version.String())
|
||||
}
|
||||
8
internal/pkg/semver/types.go
Normal file
8
internal/pkg/semver/types.go
Normal file
@ -0,0 +1,8 @@
|
||||
package semver
|
||||
|
||||
import "github.com/coreos/go-semver/semver"
|
||||
|
||||
type Tag struct {
|
||||
Prefix string
|
||||
Version semver.Version
|
||||
}
|
||||
Reference in New Issue
Block a user