// +build ignore package main import ( "bytes" "fmt" "io/ioutil" "log" "os/exec" "strings" ) func main() { var ret bytes.Buffer c := exec.Command("git", "describe", "--tags") c.Stdout = &ret if err := c.Run(); err != nil { log.Fatalln("run git describe", err) } var buf bytes.Buffer fmt.Fprintln(&buf, "// Code generated by go generate; DO NOT EDIT.") fmt.Fprintln(&buf) fmt.Fprintln(&buf, "package main") fmt.Fprintln(&buf) fmt.Fprintf(&buf, "const Version = `%s`", strings.TrimSpace(ret.String())) if err := ioutil.WriteFile("version.go", buf.Bytes(), 0644); err != nil { log.Fatalln("write file", err) } }