|
|
@ -5,7 +5,6 @@ import (
|
|
|
|
"fmt"
|
|
|
|
"fmt"
|
|
|
|
"net/http"
|
|
|
|
"net/http"
|
|
|
|
"os"
|
|
|
|
"os"
|
|
|
|
"path"
|
|
|
|
|
|
|
|
"path/filepath"
|
|
|
|
"path/filepath"
|
|
|
|
"strconv"
|
|
|
|
"strconv"
|
|
|
|
"strings"
|
|
|
|
"strings"
|
|
|
@ -53,7 +52,7 @@ func main() {
|
|
|
|
owner := ctx.RepositoryOwner
|
|
|
|
owner := ctx.RepositoryOwner
|
|
|
|
repo := strings.Split(ctx.Repository, "/")[1]
|
|
|
|
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,
|
|
|
|
TagName: ctx.RefName,
|
|
|
|
IsDraft: draft,
|
|
|
|
IsDraft: draft,
|
|
|
|
IsPrerelease: preRelease,
|
|
|
|
IsPrerelease: preRelease,
|
|
|
@ -130,13 +129,22 @@ func getFiles(parentDir, files string) ([]string, error) {
|
|
|
|
return fileList, nil
|
|
|
|
return fileList, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func createRelease(ctx *gha.GitHubContext, c *gitea.Client, owner, repo string, opts gitea.CreateReleaseOption) (*gitea.Release, error) {
|
|
|
|
func createOrGetRelease(ctx *gha.GitHubContext, c *gitea.Client, owner, repo string, opts gitea.CreateReleaseOption) (*gitea.Release, error) {
|
|
|
|
|
|
|
|
// Get the release by tag
|
|
|
|
|
|
|
|
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\n", errMessage)
|
|
|
|
// Create the release
|
|
|
|
// Create the release
|
|
|
|
release, _, err := c.CreateRelease(owner, repo, opts)
|
|
|
|
release, _, err = c.CreateRelease(owner, repo, opts)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("failed to create release: %w", err)
|
|
|
|
return nil, fmt.Errorf("failed to create release: %w and %s", err, errMessage)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return release, nil
|
|
|
|
return release, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -153,7 +161,7 @@ func uploadFiles(ctx *gha.GitHubContext, c *gitea.Client, owner, repo string, re
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for _, attachment := range attachments {
|
|
|
|
for _, attachment := range attachments {
|
|
|
|
if attachment.Name == path.Base(file) {
|
|
|
|
if attachment.Name == filepath.Base(file) {
|
|
|
|
if _, err := c.DeleteReleaseAttachment(owner, repo, releaseID, attachment.ID); err != nil {
|
|
|
|
if _, err := c.DeleteReleaseAttachment(owner, repo, releaseID, attachment.ID); err != nil {
|
|
|
|
f.Close()
|
|
|
|
f.Close()
|
|
|
|
return fmt.Errorf("failed to delete release attachment %s: %w", file, err)
|
|
|
|
return fmt.Errorf("failed to delete release attachment %s: %w", file, err)
|
|
|
@ -163,7 +171,7 @@ func uploadFiles(ctx *gha.GitHubContext, c *gitea.Client, owner, repo string, re
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if _, _, err = c.CreateReleaseAttachment(owner, repo, releaseID, f, path.Base(file)); err != nil {
|
|
|
|
if _, _, err = c.CreateReleaseAttachment(owner, repo, releaseID, f, filepath.Base(file)); err != nil {
|
|
|
|
f.Close()
|
|
|
|
f.Close()
|
|
|
|
return fmt.Errorf("failed to upload release attachment %s: %w", file, err)
|
|
|
|
return fmt.Errorf("failed to upload release attachment %s: %w", file, err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|