package main import ( "fmt" "io/ioutil" "os" "os/exec" ) const warning = "//WARNING! DO NOT EDIT THIS FILE BY HAND. IT IS AUTO GENERATED.\n" const header = "package main\n" const code = ` import ( "fmt" "os" "strings" ) func init() { flagIsSet := func(arg string, sfortFlag string) bool { arg = strings.Split(arg, "=")[0] if len(arg)>1 { if arg[0] == "-"[0] && arg[1] != "-"[0] { return strings.Contains(arg, sfortFlag) } } return false } for _, arg := range os.Args { if flagIsSet(arg, "v") || arg == "--version" { fmt.Println(gitVersion) os.Exit(0) } } } const gitVersion = "` func main() { cmd := exec.Command("git", "describe", "--tags", "--abbrev=0") out, err := cmd.Output() if err != nil { fmt.Println(err) os.Exit(0) } version := string(out) version = version[:len(version)-1] content := warning + header + code + version + "\"" ioutil.WriteFile("version.go", []byte(content), 0644) }