package metadata import ( "os/exec" "runtime/debug" "strings" ) var ( GoTomatoVersion = "" // The GoTomato version ProtocolVersion = "" // The protocol version ) func stripVersionPrefix(version string) string { return strings.TrimLeft(version, "v") } func getLatestTag() string { bytes, _ := exec.Command("git", "describe", "--tags").Output() output := strings.TrimSpace(string(bytes)) return stripVersionPrefix(output) } // set version from runtime/debug.Main.Version // use latest git tag as fallback // allow GoTomatoVersion to be overwritten via ldflags func init() { if GoTomatoVersion == "" { info, _ := debug.ReadBuildInfo() if info.Main.Version != "(devel)" { GoTomatoVersion = stripVersionPrefix(info.Main.Version) } else { GoTomatoVersion = getLatestTag() } } ProtocolVersion = strings.Split(GoTomatoVersion, ".")[0] }