tmp(releser, github-provider): add releaser and github as first release provider

This commit is contained in:
Felix Wiedmann
2019-05-28 18:44:27 +02:00
parent ed18a9e4cb
commit 1c9b6d5c41
2 changed files with 72 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
package releaser
import (
"fmt"
"github.com/Nightapes/go-semantic-release/internal/cache"
"github.com/Nightapes/go-semantic-release/internal/releaser/releasers"
"github.com/Nightapes/go-semantic-release/pkg/config"
)
// Releasers struct type
type Releasers struct {
config *config.ReleaseConfig
}
// Releaser interface for providers
type Releaser interface {
CreateRelease(releaseName, releaseMessage string) error
}
// New initialize a Relerser
func New(c *config.ReleaseConfig) *Releasers {
return &Releasers{
config: c,
}
}
//GetReleaser returns an initialized releaser
func (r *Releasers) GetReleaser(releaserType string) (Releaser, error) {
switch releaserType {
case releasers.GITHUB:
return releasers.NewGitHubReleaser(r.config), nil
}
return nil, fmt.Errorf("Could not initialize a releaser from this type: %s", releaserType)
}
// tbd. http helper function

View File

@@ -0,0 +1,36 @@
package releasers
import (
"github.com/Nightapes/go-semantic-release/pkg/config"
)
// GITHUB identifer for github interface
const GITHUB = "github"
// GitHubReleaser type struct
type GitHubReleaser struct {
RepositoryURL string
TagName string `json:"tag_name"`
TargetCommitish string `json:"target_commitish"`
ReleaseName string `json:"name"`
ReleaseMessage string `json:"body"`
Draft bool `json:"draft,omitempty"`
Prerelease bool `json:"prerelease,omitempty"`
// Assets
}
// CreateRelease creates release on remote
func (g *GitHubReleaser) CreateRelease(releaseName, releaseMessage string) error {
g.ReleaseName = releaseName
g.ReleaseMessage = releaseMessage
return nil
}
// NewGitHubReleaser initialize a new GitHubRelease
func NewGitHubReleaser(c *config.ReleaseConfig, branch, latestVersion string) *GitHubReleaser {
return &GitHubReleaser{
RepositoryURL: c.Github["url"],
TargetCommitish: branch,
TagName: latestVersion,
}
}