mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-01-13 13:21:00 +00:00
refactor: interface for versioning strategy (#109)
This commit is contained in:
parent
11f8403241
commit
ef1d92cff0
5 changed files with 15 additions and 12 deletions
|
|
@ -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},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue