diff --git a/cmd/rp/cmd/root.go b/cmd/rp/cmd/root.go index be92187..dd4f9a7 100644 --- a/cmd/rp/cmd/root.go +++ b/cmd/rp/cmd/root.go @@ -1,7 +1,6 @@ package cmd import ( - "fmt" "log/slog" "os" "runtime/debug" @@ -24,7 +23,6 @@ func version() string { buildInfo, ok := debug.ReadBuildInfo() if ok { - fmt.Println(buildInfo.String()) for _, setting := range buildInfo.Settings { switch setting.Key { case "vcs.revision": diff --git a/releasepr.go b/releasepr.go index a6744c4..e177010 100644 --- a/releasepr.go +++ b/releasepr.go @@ -59,9 +59,8 @@ func NewReleasePullRequest(head, branch, version, changelogEntry string) (*Relea } type ReleaseOverrides struct { - Prefix string - Suffix string - // TODO: Doing the changelog for normal releases after previews requires to know about this while fetching the commits + Prefix string + Suffix string NextVersionType NextVersionType } @@ -92,6 +91,17 @@ func (n NextVersionType) String() string { } } +func (n NextVersionType) IsPrerelease() bool { + switch n { + case NextVersionTypeRC, NextVersionTypeBeta, NextVersionTypeAlpha: + return true + case NextVersionTypeUndefined, NextVersionTypeNormal: + return false + default: + return false + } +} + // Label is the string identifier of a pull/merge request label on the forge. type Label string diff --git a/releaserpleaser.go b/releaserpleaser.go index 5dfcf12..f0bf6cd 100644 --- a/releaserpleaser.go +++ b/releaserpleaser.go @@ -143,6 +143,27 @@ func (rp *ReleaserPleaser) createPendingRelease(ctx context.Context, pr *Release func (rp *ReleaserPleaser) runReconcileReleasePR(ctx context.Context) error { logger := rp.logger.With("method", "runReconcileReleasePR") + rpBranch := fmt.Sprintf(PullRequestBranchFormat, rp.targetBranch) + rpBranchRef := plumbing.NewBranchReferenceName(rpBranch) + + pr, err := rp.forge.PullRequestForBranch(ctx, rpBranch) + if err != nil { + return err + } + + var releaseOverrides ReleaseOverrides + + if pr != nil { + logger = logger.With("pr.id", pr.ID, "pr.title", pr.Title) + logger.InfoContext(ctx, "found existing release pull request") + + releaseOverrides, err = pr.GetOverrides() + if err != nil { + return err + } + + } + releases, err := rp.forge.LatestTags(ctx) if err != nil { return err @@ -157,7 +178,15 @@ func (rp *ReleaserPleaser) runReconcileReleasePR(ctx context.Context) error { logger.InfoContext(ctx, "no latest tag found") } - releasableCommits, err := rp.forge.CommitsSince(ctx, releases.Stable) + // By default, we want to show everything that has happened since the last stable release + lastReleaseCommit := releases.Stable + if releaseOverrides.NextVersionType.IsPrerelease() { + // if the new release will be a prerelease, + // only show changes since the latest release (stable or prerelease) + lastReleaseCommit = releases.Latest + } + + releasableCommits, err := rp.forge.CommitsSince(ctx, lastReleaseCommit) if err != nil { return err } @@ -172,22 +201,6 @@ func (rp *ReleaserPleaser) runReconcileReleasePR(ctx context.Context) error { logger.InfoContext(ctx, "Analyzed commits", "length", len(analyzedCommits)) - rpBranch := fmt.Sprintf(PullRequestBranchFormat, rp.targetBranch) - rpBranchRef := plumbing.NewBranchReferenceName(rpBranch) - // Check Forge for open PR - // Get any modifications from open PR - // Clone Repo - // Run Updaters + Changelog - // Upsert PR - pr, err := rp.forge.PullRequestForBranch(ctx, rpBranch) - if err != nil { - return err - } - - if pr != nil { - logger.InfoContext(ctx, "found existing release pull request", "pr.id", pr.ID, "pr.title", pr.Title) - } - if len(analyzedCommits) == 0 { if pr != nil { logger.InfoContext(ctx, "closing existing pull requests, no commits available", "pr.id", pr.ID, "pr.title", pr.Title) @@ -202,14 +215,6 @@ func (rp *ReleaserPleaser) runReconcileReleasePR(ctx context.Context) error { return nil } - var releaseOverrides ReleaseOverrides - if pr != nil { - releaseOverrides, err = pr.GetOverrides() - if err != nil { - return err - } - } - versionBump := VersionBumpFromCommits(analyzedCommits) // TODO: Set version in release pr nextVersion, err := rp.nextVersion(releases, versionBump, releaseOverrides.NextVersionType)