2017-01-14 16:34:22 +02:00
|
|
|
package git
|
|
|
|
|
2017-01-30 01:55:32 +02:00
|
|
|
import (
|
2017-01-30 12:08:42 +02:00
|
|
|
"regexp"
|
2017-01-30 01:55:32 +02:00
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/goreleaser/goreleaser/context"
|
|
|
|
)
|
2017-01-14 16:34:22 +02:00
|
|
|
|
2017-01-30 12:08:42 +02:00
|
|
|
// ErrInvalidVersionFormat is return when the version isnt in a valid format
|
|
|
|
type ErrInvalidVersionFormat struct {
|
|
|
|
version string
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e ErrInvalidVersionFormat) Error() string {
|
|
|
|
return e.version + " is not in a valid version format"
|
|
|
|
}
|
|
|
|
|
2017-01-14 16:34:22 +02:00
|
|
|
// Pipe for brew deployment
|
|
|
|
type Pipe struct{}
|
|
|
|
|
2017-01-14 20:41:32 +02:00
|
|
|
// Description of the pipe
|
2017-01-14 19:14:35 +02:00
|
|
|
func (Pipe) Description() string {
|
2017-01-19 11:04:41 +02:00
|
|
|
return "Getting Git info"
|
2017-01-14 16:34:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Run the pipe
|
2017-01-14 18:06:57 +02:00
|
|
|
func (Pipe) Run(ctx *context.Context) (err error) {
|
2017-01-14 16:34:22 +02:00
|
|
|
tag, err := currentTag()
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
previous, err := previousTag(tag)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
log, err := log(previous, tag)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2017-01-18 19:08:48 +02:00
|
|
|
ctx.Git = context.GitInfo{
|
2017-01-14 18:06:57 +02:00
|
|
|
CurrentTag: tag,
|
|
|
|
PreviousTag: previous,
|
|
|
|
Diff: log,
|
|
|
|
}
|
2017-01-30 01:55:32 +02:00
|
|
|
// removes usual `v` prefix
|
|
|
|
ctx.Version = strings.TrimPrefix(tag, "v")
|
2017-04-09 15:43:23 +02:00
|
|
|
matches, err := regexp.MatchString("^[0-9.]+", ctx.Version)
|
|
|
|
if err != nil || !matches {
|
2017-01-30 12:08:42 +02:00
|
|
|
return ErrInvalidVersionFormat{ctx.Version}
|
|
|
|
}
|
2017-03-26 01:24:38 +02:00
|
|
|
commit, err := commitHash()
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
ctx.Git.Commit = commit
|
2017-01-14 16:34:22 +02:00
|
|
|
return
|
|
|
|
}
|