2017-04-14 20:39:32 +02:00
|
|
|
// Package context provides gorelease context which is passed through the
|
|
|
|
// pipeline.
|
|
|
|
//
|
|
|
|
// The context extends the standard library context and add a few more
|
|
|
|
// fields and other things, so pipes can gather data provided by previous
|
|
|
|
// pipes without really knowing each other.
|
2017-01-14 16:34:22 +02:00
|
|
|
package context
|
|
|
|
|
2017-02-23 21:01:54 +02:00
|
|
|
import (
|
|
|
|
ctx "context"
|
2017-12-06 01:01:47 +02:00
|
|
|
"os"
|
2017-04-14 17:07:40 +02:00
|
|
|
"strings"
|
2017-02-23 21:01:54 +02:00
|
|
|
|
|
|
|
"github.com/goreleaser/goreleaser/config"
|
2017-12-17 19:18:46 +02:00
|
|
|
"github.com/goreleaser/goreleaser/internal/artifact"
|
2017-02-23 21:01:54 +02:00
|
|
|
)
|
2017-01-14 16:34:22 +02:00
|
|
|
|
|
|
|
// GitInfo includes tags and diffs used in some point
|
|
|
|
type GitInfo struct {
|
2017-04-19 22:05:10 +02:00
|
|
|
CurrentTag string
|
|
|
|
Commit string
|
2017-01-14 16:34:22 +02:00
|
|
|
}
|
|
|
|
|
2017-01-15 12:48:27 +02:00
|
|
|
// Context carries along some data through the pipes
|
2017-01-14 16:34:22 +02:00
|
|
|
type Context struct {
|
2017-02-23 21:01:54 +02:00
|
|
|
ctx.Context
|
2017-04-19 22:05:10 +02:00
|
|
|
Config config.Project
|
2017-12-06 01:01:47 +02:00
|
|
|
Env map[string]string
|
2017-04-19 22:05:10 +02:00
|
|
|
Token string
|
|
|
|
Git GitInfo
|
2017-12-17 19:18:46 +02:00
|
|
|
Artifacts artifact.Artifacts
|
2017-04-19 22:05:10 +02:00
|
|
|
ReleaseNotes string
|
|
|
|
Version string
|
|
|
|
Validate bool
|
|
|
|
Publish bool
|
2017-04-29 12:49:22 +02:00
|
|
|
Snapshot bool
|
2017-07-05 03:53:50 +02:00
|
|
|
RmDist bool
|
2017-11-04 19:22:29 +02:00
|
|
|
Debug bool
|
2017-07-15 21:49:52 +02:00
|
|
|
Parallelism int
|
2017-04-14 17:07:40 +02:00
|
|
|
}
|
|
|
|
|
2017-01-15 12:48:27 +02:00
|
|
|
// New context
|
2017-01-15 18:37:00 +02:00
|
|
|
func New(config config.Project) *Context {
|
2017-01-14 16:34:22 +02:00
|
|
|
return &Context{
|
2017-07-15 21:49:52 +02:00
|
|
|
Context: ctx.Background(),
|
|
|
|
Config: config,
|
2017-12-06 01:01:47 +02:00
|
|
|
Env: splitEnv(os.Environ()),
|
2017-07-15 21:49:52 +02:00
|
|
|
Parallelism: 4,
|
2017-12-17 21:25:04 +02:00
|
|
|
Artifacts: artifact.New(),
|
2017-01-14 16:34:22 +02:00
|
|
|
}
|
|
|
|
}
|
2017-12-06 01:01:47 +02:00
|
|
|
|
|
|
|
func splitEnv(env []string) map[string]string {
|
|
|
|
r := map[string]string{}
|
|
|
|
for _, e := range env {
|
|
|
|
p := strings.SplitN(e, "=", 2)
|
|
|
|
r[p[0]] = p[1]
|
|
|
|
}
|
|
|
|
return r
|
|
|
|
}
|