mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-01-13 13:21:00 +00:00
feat: parse existing release pr
This commit is contained in:
parent
a06bbec1f6
commit
8199918903
3 changed files with 219 additions and 15 deletions
|
|
@ -4,6 +4,7 @@ Copyright © 2024 Julian Tölle
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
|
@ -11,6 +12,10 @@ import (
|
|||
rp "github.com/apricote/releaser-pleaser"
|
||||
)
|
||||
|
||||
const (
|
||||
RELEASER_PLEASER_BRANCH = "releaser-pleaser--branches--%s"
|
||||
)
|
||||
|
||||
// runCmd represents the run command
|
||||
var runCmd = &cobra.Command{
|
||||
Use: "run",
|
||||
|
|
@ -56,34 +61,65 @@ func run(cmd *cobra.Command, args []string) error {
|
|||
})
|
||||
}
|
||||
|
||||
tag, err := f.LatestTag(ctx)
|
||||
changesets, err := getChangesetsFromForge(ctx, f)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("failed to get changesets: %w", err)
|
||||
}
|
||||
|
||||
err = reconcileReleasePR(ctx, f, changesets)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to reconcile release pr: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func getChangesetsFromForge(ctx context.Context, forge rp.Forge) ([]rp.Changeset, error) {
|
||||
tag, err := forge.LatestTag(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logger.InfoContext(ctx, "Latest Tag", "tag.hash", tag.Hash, "tag.name", tag.Name)
|
||||
|
||||
releaseableCommits, err := f.CommitsSince(ctx, tag)
|
||||
releasableCommits, err := forge.CommitsSince(ctx, tag)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logger.InfoContext(ctx, "Found releasable commits", "length", len(releaseableCommits))
|
||||
logger.InfoContext(ctx, "Found releasable commits", "length", len(releasableCommits))
|
||||
|
||||
changesets, err := f.Changesets(ctx, releaseableCommits)
|
||||
changesets, err := forge.Changesets(ctx, releasableCommits)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logger.InfoContext(ctx, "Found changesets", "length", len(changesets))
|
||||
|
||||
for _, changeset := range changesets {
|
||||
fmt.Printf("%s %s\n", changeset.Identifier, changeset.URL)
|
||||
for _, entry := range changeset.ChangelogEntries {
|
||||
fmt.Printf(" - %s %s\n", entry.Hash, entry.Description)
|
||||
}
|
||||
return changesets, nil
|
||||
}
|
||||
|
||||
func reconcileReleasePR(ctx context.Context, forge rp.Forge, changesets []rp.Changeset) error {
|
||||
// Check Forge for open PR
|
||||
// Get any modifications from open PR
|
||||
// Clone Repo
|
||||
// Run Updaters + Changelog
|
||||
// Upsert PR
|
||||
pr, err := forge.PullRequestForBranch(ctx, fmt.Sprintf(RELEASER_PLEASER_BRANCH, flagBranch))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("Previous Tag: %s\n", tag.Name)
|
||||
|
||||
if pr != nil {
|
||||
logger.InfoContext(ctx, "found existing release pull request: %d: %s", pr.ID, pr.Title)
|
||||
}
|
||||
|
||||
releaseOverrides, err := pr.GetOverrides()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// ...
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue