github.com/jasei/goreleaser@v0.62.4-0.20180312171904-62cb6a8963a6/pipeline/release/body.go (about) 1 package release 2 3 import ( 4 "bytes" 5 "os/exec" 6 "text/template" 7 8 "github.com/goreleaser/goreleaser/context" 9 "github.com/goreleaser/goreleaser/internal/artifact" 10 ) 11 12 const bodyTemplateText = `{{ .ReleaseNotes }} 13 14 {{- if .DockerImages }} 15 16 ## Docker images 17 {{ range $element := .DockerImages }} 18 - ` + "`docker pull {{ . -}}`" + ` 19 {{- end -}} 20 {{- end }} 21 22 --- 23 Automated with [GoReleaser](https://github.com/goreleaser) 24 Built with {{ .GoVersion }}` 25 26 var bodyTemplate *template.Template 27 28 func init() { 29 bodyTemplate = template.Must(template.New("release").Parse(bodyTemplateText)) 30 } 31 32 func describeBody(ctx *context.Context) (bytes.Buffer, error) { 33 /* #nosec */ 34 bts, err := exec.CommandContext(ctx, "go", "version").CombinedOutput() 35 if err != nil { 36 return bytes.Buffer{}, err 37 } 38 return describeBodyVersion(ctx, string(bts)) 39 } 40 41 func describeBodyVersion(ctx *context.Context, version string) (bytes.Buffer, error) { 42 var out bytes.Buffer 43 var dockers []string 44 for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerImage)).List() { 45 dockers = append(dockers, a.Name) 46 } 47 err := bodyTemplate.Execute(&out, struct { 48 ReleaseNotes, GoVersion string 49 DockerImages []string 50 }{ 51 ReleaseNotes: ctx.ReleaseNotes, 52 GoVersion: version, 53 DockerImages: dockers, 54 }) 55 return out, err 56 }