diff --git a/internal/releaser/github/github.go b/internal/releaser/github/github.go index 98857ae..33e93a0 100644 --- a/internal/releaser/github/github.go +++ b/internal/releaser/github/github.go @@ -19,11 +19,12 @@ const GITHUB = "github" // Client type struct type Client struct { - config *config.GitHubProvider - client *github.Client - context context.Context - release *github.RepositoryRelease - baseURL string + config *config.GitHubProvider + client *github.Client + context context.Context + release *github.RepositoryRelease + draft, prerelease bool + baseURL string } // New initialize a new GitHubRelease @@ -64,6 +65,18 @@ func (g Client) GetCompareURL(oldVersion, newVersion string) string { return fmt.Sprintf("%s/%s/%s/compare/%s...%s", g.baseURL, g.config.User, g.config.Repo, oldVersion, newVersion) } +//SetReleaseType sets the provider release type +func (g Client) SetReleaseType(releaseVersion *shared.ReleaseVersion) { + if !releaseVersion.Next.Draft { + log.Debugf("Set release as draft") + g.draft = true + } + if releaseVersion.Next.Prerelease() != "" { + log.Debugf("Set release as prerelease") + g.prerelease = true + } +} + //ValidateConfig for github func (g Client) ValidateConfig() error { log.Debugf("validate GitHub provider config") @@ -83,16 +96,16 @@ func (g Client) ValidateConfig() error { // CreateRelease creates release on remote func (g Client) CreateRelease(releaseVersion *shared.ReleaseVersion, generatedChangelog *shared.GeneratedChangelog) error { - tag := releaseVersion.Next.Version.String() - log.Debugf("create relase with for version %s", tag) - prerelease := releaseVersion.Next.Version.Prerelease() != "" + tag := releaseVersion.Next.String() + log.Debugf("create release witth version %s", tag) + release, resp, err := g.client.Repositories.CreateRelease(g.context, g.config.User, g.config.Repo, &github.RepositoryRelease{ TagName: &tag, TargetCommitish: &releaseVersion.Branch, Name: &generatedChangelog.Title, Body: &generatedChangelog.Content, - Draft: &prerelease, - Prerelease: &prerelease, + Draft: &g.draft, + Prerelease: &g.prerelease, }) if err != nil { diff --git a/internal/releaser/releaser.go b/internal/releaser/releaser.go index f5ace38..63a897c 100644 --- a/internal/releaser/releaser.go +++ b/internal/releaser/releaser.go @@ -22,6 +22,7 @@ type Releaser interface { UploadAssets(assets []config.Asset) error GetCommitURL() string GetCompareURL(oldVersion, newVersion string) string + SetReleaseType(*shared.ReleaseVersion) } // New initialize a Relerser diff --git a/pkg/semanticrelease/semantic-release.go b/pkg/semanticrelease/semantic-release.go index 63f2552..ae2afac 100644 --- a/pkg/semanticrelease/semantic-release.go +++ b/pkg/semanticrelease/semantic-release.go @@ -242,6 +242,8 @@ func (s *SemanticRelease) Release(force bool) error { return err } + releaser.SetReleaseType(releaseVersion) + if err = releaser.CreateRelease(releaseVersion, generatedChanglog); err != nil { return err }