GoTomato/internal/metadata/version.go
Sebastian Mark 7ffb5db906 feat: retrieve version from runtime/debug.Main.Version or latest git tag
- set version from runtime/debug.Main.Version
- use latest git tag as fallback
- allow GoTomatoVersion to be overwritten via ldflags
2024-11-09 20:21:55 +01:00

37 lines
884 B
Go

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] // The protocol version
}