code: func (Pipe) Run(ctx *context.Context) (err error) {
  	filename, err := tmpl.New(ctx).Apply(ctx.Config.Checksum.NameTemplate)
  	if err != nil {
  		return err
  	}
  	file, err := os.OpenFile(
  		filepath.Join(ctx.Config.Dist, filename),
  		os.O_APPEND|os.O_WRONLY|os.O_CREATE|os.O_TRUNC,
  		0444,
  	)
  	if err != nil {
  		return err
  	}
  	defer file.Close() // nolint: errcheck
  
  	var g = semerrgroup.New(ctx.Parallelism)
  	for _, artifact := range ctx.Artifacts.Filter(
  		artifact.Or(
  			artifact.ByType(artifact.UploadableArchive),
  			artifact.ByType(artifact.UploadableBinary),
  			artifact.ByType(artifact.LinuxPackage),
  		),
  	).List() {
  		artifact := artifact
  		g.Go(func() error {
  			return checksums(ctx.Config.Checksum.Algorithm, file, artifact)
  		})
  	}
  	ctx.Artifacts.Add(artifact.Artifact{
  		Type: artifact.Checksum,
  		Path: file.Name(),
  		Name: filename,
  	})
  	return g.Wait()
  }
docs: // Run the pipe