refactor: interface for versioning strategy

This commit is contained in:
Julian Tölle 2024-11-15 18:28:14 +01:00
parent 11f8403241
commit f5ab3e143d
5 changed files with 15 additions and 12 deletions

View file

@ -10,9 +10,11 @@ import (
"github.com/apricote/releaser-pleaser/internal/git"
)
var _ Strategy = SemVerNextVersion
var SemVer Strategy = semVer{}
func SemVerNextVersion(r git.Releases, versionBump VersionBump, nextVersionType NextVersionType) (string, error) {
type semVer struct{}
func (s semVer) NextVersion(r git.Releases, versionBump VersionBump, nextVersionType NextVersionType) (string, error) {
latest, err := parseSemverWithDefault(r.Latest)
if err != nil {
return "", fmt.Errorf("failed to parse latest version: %w", err)

View file

@ -10,7 +10,7 @@ import (
"github.com/apricote/releaser-pleaser/internal/git"
)
func TestReleases_NextVersion(t *testing.T) {
func TestSemVer_NextVersion(t *testing.T) {
type args struct {
releases git.Releases
versionBump VersionBump
@ -326,7 +326,7 @@ func TestReleases_NextVersion(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := SemVerNextVersion(tt.args.releases, tt.args.versionBump, tt.args.nextVersionType)
got, err := SemVer.NextVersion(tt.args.releases, tt.args.versionBump, tt.args.nextVersionType)
if !tt.wantErr(t, err, fmt.Sprintf("SemVerNextVersion(Releases(%v, %v), %v, %v)", tt.args.releases.Latest, tt.args.releases.Stable, tt.args.versionBump, tt.args.nextVersionType)) {
return
}

View file

@ -6,7 +6,9 @@ import (
"github.com/apricote/releaser-pleaser/internal/git"
)
type Strategy = func(git.Releases, VersionBump, NextVersionType) (string, error)
type Strategy interface {
NextVersion(git.Releases, VersionBump, NextVersionType) (string, error)
}
type VersionBump conventionalcommits.VersionBump