github.com/amane3/goreleaser@v0.182.0/internal/pipe/release/body.go (about)

     1  package release
     2  
     3  import (
     4  	"bytes"
     5  	"text/template"
     6  
     7  	"github.com/amane3/goreleaser/internal/artifact"
     8  	"github.com/amane3/goreleaser/pkg/context"
     9  )
    10  
    11  const bodyTemplateText = `{{ .ReleaseNotes }}
    12  
    13  {{- with .DockerImages }}
    14  
    15  ## Docker images
    16  {{ range $element := . }}
    17  - ` + "`docker pull {{ . -}}`" + `
    18  {{- end -}}
    19  {{- end }}
    20  `
    21  
    22  func describeBody(ctx *context.Context) (bytes.Buffer, error) {
    23  	var out bytes.Buffer
    24  	// nolint:prealloc
    25  	var dockers []string
    26  	for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerManifest)).List() {
    27  		dockers = append(dockers, a.Name)
    28  	}
    29  	if len(dockers) == 0 {
    30  		for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerImage)).List() {
    31  			dockers = append(dockers, a.Name)
    32  		}
    33  	}
    34  	var bodyTemplate = template.Must(template.New("release").Parse(bodyTemplateText))
    35  	err := bodyTemplate.Execute(&out, struct {
    36  		ReleaseNotes string
    37  		DockerImages []string
    38  	}{
    39  		ReleaseNotes: ctx.ReleaseNotes,
    40  		DockerImages: dockers,
    41  	})
    42  	return out, err
    43  }