github.com/goreleaser/goreleaser@v1.25.1/internal/pipe/semver/semver.go (about) 1 package semver 2 3 import ( 4 "fmt" 5 6 "github.com/Masterminds/semver/v3" 7 "github.com/goreleaser/goreleaser/pkg/context" 8 ) 9 10 // Pipe is a global hook pipe. 11 type Pipe struct{} 12 13 // String is the name of this pipe. 14 func (Pipe) String() string { 15 return "parsing tag" 16 } 17 18 // Run executes the hooks. 19 func (Pipe) Run(ctx *context.Context) error { 20 sv, err := semver.NewVersion(ctx.Git.CurrentTag) 21 if err != nil { 22 return fmt.Errorf("failed to parse tag '%s' as semver: %w", ctx.Git.CurrentTag, err) 23 } 24 ctx.Semver = context.Semver{ 25 Major: sv.Major(), 26 Minor: sv.Minor(), 27 Patch: sv.Patch(), 28 Prerelease: sv.Prerelease(), 29 } 30 return nil 31 }