github.com/undoio/delve@v1.9.0/pkg/version/buildinfo.go (about)

     1  //go:build go1.12
     2  // +build go1.12
     3  
     4  package version
     5  
     6  import (
     7  	"bytes"
     8  	"runtime/debug"
     9  	"text/template"
    10  )
    11  
    12  func init() {
    13  	buildInfo = moduleBuildInfo
    14  }
    15  
    16  var buildInfoTmpl = ` mod	{{.Main.Path}}	{{.Main.Version}}	{{.Main.Sum}}
    17  {{range .Deps}} dep	{{.Path}}	{{.Version}}	{{.Sum}}{{if .Replace}}
    18  	=> {{.Replace.Path}}	{{.Replace.Version}}	{{.Replace.Sum}}{{end}}
    19  {{end}}`
    20  
    21  func moduleBuildInfo() string {
    22  	info, ok := debug.ReadBuildInfo()
    23  	if !ok {
    24  		return "not built in module mode"
    25  	}
    26  
    27  	buf := new(bytes.Buffer)
    28  	err := template.Must(template.New("buildinfo").Parse(buildInfoTmpl)).Execute(buf, info)
    29  	if err != nil {
    30  		panic(err)
    31  	}
    32  	return buf.String()
    33  }