@ -52,7 +52,7 @@ func main() {
owner := ctx . RepositoryOwner
repo := strings . Split ( ctx . Repository , "/" ) [ 1 ]
rel , err := create Release( ctx , c , owner , repo , gitea . CreateReleaseOption {
rel , err := create OrGet Release( ctx , c , owner , repo , gitea . CreateReleaseOption {
TagName : ctx . RefName ,
IsDraft : draft ,
IsPrerelease : preRelease ,
@ -129,13 +129,22 @@ 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 ) {
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
release , _ , err := c . CreateRelease ( owner , repo , opts )
release , _ , err = c . CreateRelease ( owner , repo , opts )
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
}