Files
Acbox 6c2da4b2f5 feat(web,server): expose server version and commit hash in Profile page
Add version and commit_hash fields to the /ping endpoint response,
sourced from the existing internal/version package (ldflags or
Go build info). The frontend capabilities store reads these values
and displays them as badges at the bottom of the Profile page.
2026-03-29 17:38:33 +08:00

55 lines
1.2 KiB
Go

package version
import (
"fmt"
"runtime/debug"
)
var (
// Version is the current version of the application.
// It can be overridden by ldflags at build time.
Version = "dev"
// CommitHash is the git commit hash at build time.
// It can be overridden by ldflags at build time.
CommitHash = ""
// BuildTime is the time when the application was built.
// It can be overridden by ldflags at build time.
BuildTime = ""
)
// EnsureBuildInfo populates CommitHash and BuildTime from Go build info
// when they were not set via ldflags.
func EnsureBuildInfo() {
if CommitHash == "" {
if info, ok := debug.ReadBuildInfo(); ok {
for _, setting := range info.Settings {
if setting.Key == "vcs.revision" {
CommitHash = setting.Value
}
if setting.Key == "vcs.time" {
BuildTime = setting.Value
}
}
}
}
}
// ShortCommitHash returns the first 7 characters of the commit hash.
func ShortCommitHash() string {
EnsureBuildInfo()
if len(CommitHash) > 7 {
return CommitHash[:7]
}
return CommitHash
}
// GetInfo returns a formatted version string including the version and commit hash.
func GetInfo() string {
EnsureBuildInfo()
res := Version
if h := ShortCommitHash(); h != "" {
res += fmt.Sprintf(" (%s)", h)
}
return res
}