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
This commit is contained in:
Sebastian Mark 2024-11-09 15:59:30 +01:00
parent 2fd12e77d7
commit 69e1d3a17d

View file

@ -1,7 +1,32 @@
package metadata
import "strings"
import (
"os/exec"
"runtime/debug"
"strings"
)
// This will be overwritten by goreleaser on build
var GoTomatoVersion = "devel" // The GoTomato version
var ProtocolVersion = strings.Split(GoTomatoVersion, ".")[0] // The protocol version
var (
GoTomatoVersion = "" // The GoTomato version
ProtocolVersion = "" // The protocol version
)
func getLatestTag() string {
output, _ := exec.Command("git", "describe", "--tags").Output()
stripped_output := strings.TrimSpace(string(output))
return strings.TrimLeft(stripped_output, "v")
}
// 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()
GoTomatoVersion = info.Main.Version
if info.Main.Version == "(devel)" {
GoTomatoVersion = getLatestTag()
}
}
ProtocolVersion = strings.Split(GoTomatoVersion, ".")[0] // The protocol version
}