You've already forked goreleaser
mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-07-17 01:42:37 +02:00
@ -200,6 +200,36 @@ func (c *githubClient) CreateFile(
|
|||||||
return err
|
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) {
|
func (c *githubClient) CreateRelease(ctx *context.Context, body string) (string, error) {
|
||||||
var release *github.RepositoryRelease
|
var release *github.RepositoryRelease
|
||||||
title, err := tmpl.New(ctx).Apply(ctx.Config.Release.NameTemplate)
|
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)
|
data.DiscussionCategoryName = github.String(ctx.Config.Release.DiscussionCategoryName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ctx.Config.Release.Draft {
|
||||||
|
release, err = c.findDraftRelease(ctx)
|
||||||
|
} else {
|
||||||
release, _, err = c.client.Repositories.GetReleaseByTag(
|
release, _, err = c.client.Repositories.GetReleaseByTag(
|
||||||
ctx,
|
ctx,
|
||||||
ctx.Config.Release.GitHub.Owner,
|
ctx.Config.Release.GitHub.Owner,
|
||||||
ctx.Config.Release.GitHub.Name,
|
ctx.Config.Release.GitHub.Name,
|
||||||
ctx.Git.CurrentTag,
|
ctx.Git.CurrentTag,
|
||||||
)
|
)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
release, _, err = c.client.Repositories.CreateRelease(
|
release, _, err = c.client.Repositories.CreateRelease(
|
||||||
ctx,
|
ctx,
|
||||||
|
Reference in New Issue
Block a user