1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-02-07 13:31:37 +02:00

fix: update existing release drafts (#3073)

Closes: #3072
This commit is contained in:
yihuang 2022-05-09 08:24:27 +08:00 committed by GitHub
parent f812d1b920
commit e2902707f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -200,6 +200,36 @@ func (c *githubClient) CreateFile(
return err
}
// you can't get a an existing draft by tag
// so we must find one in the list of all releases
func (c *githubClient) findDraftRelease(ctx *context.Context) (*github.RepositoryRelease, error) {
opts := &github.ListOptions{
Page: 1,
PerPage: 100,
}
for {
releases, resp, err := c.client.Repositories.ListReleases(
ctx,
ctx.Config.Release.GitHub.Owner,
ctx.Config.Release.GitHub.Name,
opts,
)
if err != nil {
return nil, err
}
for _, r := range releases {
if r.TagName == &ctx.Git.CurrentTag {
return r, nil
}
}
if resp.NextPage == 0 {
break
}
opts.Page = resp.NextPage
}
return nil, nil
}
func (c *githubClient) CreateRelease(ctx *context.Context, body string) (string, error) {
var release *github.RepositoryRelease
title, err := tmpl.New(ctx).Apply(ctx.Config.Release.NameTemplate)
@ -221,12 +251,16 @@ func (c *githubClient) CreateRelease(ctx *context.Context, body string) (string,
data.DiscussionCategoryName = github.String(ctx.Config.Release.DiscussionCategoryName)
}
release, _, err = c.client.Repositories.GetReleaseByTag(
ctx,
ctx.Config.Release.GitHub.Owner,
ctx.Config.Release.GitHub.Name,
ctx.Git.CurrentTag,
)
if ctx.Config.Release.Draft {
release, err = c.findDraftRelease(ctx)
} else {
release, _, err = c.client.Repositories.GetReleaseByTag(
ctx,
ctx.Config.Release.GitHub.Owner,
ctx.Config.Release.GitHub.Name,
ctx.Git.CurrentTag,
)
}
if err != nil {
release, _, err = c.client.Repositories.CreateRelease(
ctx,