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

@ -86,7 +86,7 @@ func run(cmd *cobra.Command, _ []string) error {
logger,
flagBranch,
conventionalcommits.NewParser(logger),
versioning.SemVerNextVersion,
versioning.SemVer,
extraFiles,
[]updater.NewUpdater{updater.Generic},
)

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

View file

@ -23,7 +23,7 @@ type ReleaserPleaser struct {
logger *slog.Logger
targetBranch string
commitParser commitparser.CommitParser
nextVersion versioning.Strategy
versioning versioning.Strategy
extraFiles []string
updaters []updater.NewUpdater
}
@ -34,7 +34,7 @@ func New(forge forge.Forge, logger *slog.Logger, targetBranch string, commitPars
logger: logger,
targetBranch: targetBranch,
commitParser: commitParser,
nextVersion: versioningStrategy,
versioning: versioningStrategy,
extraFiles: extraFiles,
updaters: updaters,
}
@ -117,7 +117,7 @@ func (rp *ReleaserPleaser) createPendingRelease(ctx context.Context, pr *release
return err
}
changelog, err := pr.ChangelogText()
changelogText, err := pr.ChangelogText()
if err != nil {
return err
}
@ -125,7 +125,7 @@ func (rp *ReleaserPleaser) createPendingRelease(ctx context.Context, pr *release
// TODO: pre-release & latest
logger.DebugContext(ctx, "Creating release on forge")
err = rp.forge.CreateRelease(ctx, *pr.ReleaseCommit, version, changelog, false, true)
err = rp.forge.CreateRelease(ctx, *pr.ReleaseCommit, version, changelogText, false, true)
if err != nil {
return fmt.Errorf("failed to create release on forge: %w", err)
}
@ -163,7 +163,6 @@ func (rp *ReleaserPleaser) runReconcileReleasePR(ctx context.Context) error {
if err != nil {
return err
}
}
releases, err := rp.forge.LatestTags(ctx)
@ -223,7 +222,7 @@ func (rp *ReleaserPleaser) runReconcileReleasePR(ctx context.Context) error {
versionBump := versioning.BumpFromCommits(analyzedCommits)
// TODO: Set version in release pr
nextVersion, err := rp.nextVersion(releases, versionBump, releaseOverrides.NextVersionType)
nextVersion, err := rp.versioning.NextVersion(releases, versionBump, releaseOverrides.NextVersionType)
if err != nil {
return err
}