Files
go-semantic-release/internal/releaser/releaser.go

60 lines
1.4 KiB
Go
Raw Normal View History

package releaser
import (
"fmt"
2019-06-15 23:03:27 +02:00
"github.com/Nightapes/go-semantic-release/internal/releaser/github"
"github.com/Nightapes/go-semantic-release/internal/shared"
"github.com/Nightapes/go-semantic-release/pkg/config"
log "github.com/sirupsen/logrus"
)
// Releasers struct type
type Releasers struct {
config *config.ReleaseConfig
}
// Releaser interface for providers
type Releaser interface {
2019-06-15 23:03:27 +02:00
ValidateConfig() error
CreateRelease(*shared.ReleaseVersion, *shared.GeneratedChangelog) error
UploadAssets(assets []config.Asset) error
2019-06-15 23:03:27 +02:00
GetCommitURL() string
GetCompareURL(oldVersion, newVersion string) string
}
// New initialize a Relerser
func New(c *config.ReleaseConfig) *Releasers {
return &Releasers{
config: c,
}
}
//GetReleaser returns an initialized releaser
func (r *Releasers) GetReleaser() (Releaser, error) {
2019-06-15 23:03:27 +02:00
switch r.config.Release {
case github.GITHUB:
log.Debugf("initialize new %s-provider", github.GITHUB)
2019-06-15 23:03:27 +02:00
return github.New(&r.config.GitHubProvider)
}
2019-06-15 23:16:30 +02:00
return nil, fmt.Errorf("could not initialize a releaser from this type: %s", r.config.Release)
}
2019-06-15 23:16:30 +02:00
// func checkIfAssetsExists(assets []config.Asset) error {
// var missingAssets []string
// for _, asset := range assets {
2019-06-15 23:16:30 +02:00
// if _, err := os.Stat(asset.Name); err != nil {
// missingAssets = append(missingAssets, asset.Name)
// }
// }
2019-06-15 23:16:30 +02:00
// if len(missingAssets) != 0 {
// return fmt.Errorf("could not find specified Asset: %+v ", assets)
// }
2019-06-15 23:16:30 +02:00
// return nil
2019-06-15 23:16:30 +02:00
// }