Treat `banger`, `bangerd`, and `banger-vsock-agent` as one release by stamping the same version, commit SHA, and build timestamp into every binary through a shared ldflag-backed `internal/buildinfo` package. Add `banger version`, extend daemon ping/status to report the running daemon's build tuple, and keep the guest helper linked to the same build metadata without adding a new public version surface for it. Validate with `GOCACHE=/tmp/banger-gocache go test ./...`, `make build`, `./build/bin/banger version`, and `./build/bin/banger daemon status` after the daemon restarts onto the new binary.
34 lines
608 B
Go
34 lines
608 B
Go
package buildinfo
|
|
|
|
import "strings"
|
|
|
|
var (
|
|
Version = "dev"
|
|
Commit = "unknown"
|
|
BuiltAt = "unknown"
|
|
)
|
|
|
|
type Info struct {
|
|
Version string
|
|
Commit string
|
|
BuiltAt string
|
|
}
|
|
|
|
func Current() Info {
|
|
return Normalize(Version, Commit, BuiltAt)
|
|
}
|
|
|
|
func Normalize(version, commit, builtAt string) Info {
|
|
return Info{
|
|
Version: normalizedValue(version, "dev"),
|
|
Commit: normalizedValue(commit, "unknown"),
|
|
BuiltAt: normalizedValue(builtAt, "unknown"),
|
|
}
|
|
}
|
|
|
|
func normalizedValue(value, fallback string) string {
|
|
if trimmed := strings.TrimSpace(value); trimmed != "" {
|
|
return trimmed
|
|
}
|
|
return fallback
|
|
}
|