code: func resolveTargetTemplate(ctx *context.Context, put *config.Put, artifact artifact.Artifact) (string, error) {
  	data := targetData{
  		Version:     ctx.Version,
  		Tag:         ctx.Git.CurrentTag,
  		ProjectName: ctx.Config.ProjectName,
  	}
  
  	if put.Mode == ModeBinary {
  		data.Os = replace(ctx.Config.Archive.Replacements, artifact.Goos)
  		data.Arch = replace(ctx.Config.Archive.Replacements, artifact.Goarch)
  		data.Arm = replace(ctx.Config.Archive.Replacements, artifact.Goarm)
  	}
  
  	var out bytes.Buffer
  	t, err := template.New(ctx.Config.ProjectName).Parse(put.Target)
  	if err != nil {
  		return "", err
  	}
  	err = t.Execute(&out, data)
  	return out.String(), err
  }
docs: // resolveTargetTemplate returns the resolved target template with replaced variables
  // Those variables can be replaced by the given context, goos, goarch, goarm and more