From e5d338f4c59041fbb89dc035c369bd8dc5924668 Mon Sep 17 00:00:00 2001 From: myrqs Date: Thu, 4 May 2023 16:35:41 +0800 Subject: [PATCH 1/3] feat: add getRelease before createRelease to allow adding to existing release --- main.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/main.go b/main.go index 098fdf8..d2a7c34 100644 --- a/main.go +++ b/main.go @@ -53,7 +53,7 @@ func main() { owner := ctx.RepositoryOwner repo := strings.Split(ctx.Repository, "/")[1] - rel, err := createRelease(ctx, c, owner, repo, gitea.CreateReleaseOption{ + rel, err := createOrGetRelease(ctx, c, owner, repo, gitea.CreateReleaseOption{ TagName: ctx.RefName, IsDraft: draft, IsPrerelease: preRelease, @@ -130,13 +130,19 @@ func getFiles(parentDir, files string) ([]string, error) { return fileList, nil } -func createRelease(ctx *gha.GitHubContext, c *gitea.Client, owner, repo string, opts gitea.CreateReleaseOption) (*gitea.Release, error) { - // Create the release - release, _, err := c.CreateRelease(owner, repo, opts) - if err != nil { - return nil, fmt.Errorf("failed to create release: %w", err) +func createOrGetRelease(ctx *gha.GitHubContext, c *gitea.Client, owner, repo string, opts gitea.CreateReleaseOption) (*gitea.Release, error) { + // Get the release by tag + release, _, err := c.GetReleaseByTag(owner, repo, opts.TagName) + if err == nil { + return release, nil + } + errMessage := fmt.Errorf("failed to get release for tag: %s with error: %w", opts.TagName, err) + fmt.Printf("%s trying to create it", errMessage) + // Create the release + release, _, err = c.CreateRelease(owner, repo, opts) + if err != nil { + return nil, fmt.Errorf("failed to create release: %w and %s", err, errMessage) } - return release, nil } From 6f808948845fe9ac2fc8e3c551ceaae234d5d0c0 Mon Sep 17 00:00:00 2001 From: myrqs Date: Thu, 4 May 2023 15:02:03 +0200 Subject: [PATCH 2/3] fix: check response status code before continuing --- main.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index d2a7c34..d6bb8d2 100644 --- a/main.go +++ b/main.go @@ -132,11 +132,14 @@ func getFiles(parentDir, files string) ([]string, error) { func createOrGetRelease(ctx *gha.GitHubContext, c *gitea.Client, owner, repo string, opts gitea.CreateReleaseOption) (*gitea.Release, error) { // Get the release by tag - release, _, err := c.GetReleaseByTag(owner, repo, opts.TagName) + release, resp, err := c.GetReleaseByTag(owner, repo, opts.TagName) if err == nil { return release, nil } errMessage := fmt.Errorf("failed to get release for tag: %s with error: %w", opts.TagName, err) + if resp.StatusCode != 404 { + return nil, errMessage + } fmt.Printf("%s trying to create it", errMessage) // Create the release release, _, err = c.CreateRelease(owner, repo, opts) From 01d0cdbcc83d7bcd4e4eb5a72c74b0ce446ad300 Mon Sep 17 00:00:00 2001 From: myrqs Date: Thu, 4 May 2023 19:52:51 +0200 Subject: [PATCH 3/3] fix: add missing newline to print --- main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.go b/main.go index 8d0101b..11dab61 100644 --- a/main.go +++ b/main.go @@ -139,7 +139,7 @@ func createOrGetRelease(ctx *gha.GitHubContext, c *gitea.Client, owner, repo str if resp.StatusCode != 404 { return nil, errMessage } - fmt.Printf("%s trying to create it", errMessage) + fmt.Printf("%s trying to create it\n", errMessage) // Create the release release, _, err = c.CreateRelease(owner, repo, opts) if err != nil {