You've already forked go-semantic-release
tmp(releser, github-provider): add releaser and github as first release provider
This commit is contained in:
36
internal/releaser/releaser.go
Normal file
36
internal/releaser/releaser.go
Normal 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
|
||||||
36
internal/releaser/releasers/github.go
Normal file
36
internal/releaser/releasers/github.go
Normal 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,
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user