39 lines
623 B
Go
39 lines
623 B
Go
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())
|
|
}
|