36b3af2e3d
PR Check / Code Quality: Format (push) Failing after 1s
PR Check / Code Quality: Lint (darwin) (push) Failing after 0s
PR Check / Code Quality: Lint (freebsd) (push) Failing after 1s
PR Check / Code Quality: Lint (windows) (push) Failing after 1s
PR Check / Code Quality: Lint (linux) (push) Failing after 1s
PR Check / Security: Vulnerability Scan (push) Failing after 0s
Update Documentation / update-docs (push) Failing after 2s
PR Check / Code Quality: Vendor (push) Failing after 1s
PR Check / Code Quality: Coverage (push) Failing after 0s
PR Check / Tests: Unit (macos-latest) (push) Has been cancelled
PR Check / Tests: Unit (ubuntu-24.04) (push) Has been cancelled
PR Check / Tests: Unit (ubuntu-24.04-arm) (push) Has been cancelled
PR Check / Tests: Unit (windows-latest) (push) Has been cancelled
56 lines
972 B
Go
56 lines
972 B
Go
package version
|
|
|
|
import (
|
|
_ "embed"
|
|
"runtime/debug"
|
|
"strings"
|
|
)
|
|
|
|
//go:embed VERSION
|
|
var embedded string
|
|
|
|
// Version, Commit, and BuildDate are set via ldflags at build time.
|
|
// When ldflags are not provided (e.g., Debian packaging, go install),
|
|
// the embedded VERSION file and VCS build info are used as fallbacks.
|
|
var (
|
|
Version = ""
|
|
Commit = ""
|
|
BuildDate = ""
|
|
)
|
|
|
|
func init() {
|
|
if Version == "" {
|
|
v := strings.TrimSpace(embedded)
|
|
if v != "" {
|
|
Version = "v" + v
|
|
}
|
|
}
|
|
|
|
if Commit == "" || BuildDate == "" {
|
|
if info, ok := debug.ReadBuildInfo(); ok {
|
|
for _, s := range info.Settings {
|
|
switch s.Key {
|
|
case "vcs.revision":
|
|
if Commit == "" && len(s.Value) >= 7 {
|
|
Commit = s.Value[:7]
|
|
}
|
|
case "vcs.time":
|
|
if BuildDate == "" {
|
|
BuildDate = s.Value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if Version == "" {
|
|
Version = "v0.0.0-dev"
|
|
}
|
|
if Commit == "" {
|
|
Commit = "unknown"
|
|
}
|
|
if BuildDate == "" {
|
|
BuildDate = "unknown"
|
|
}
|
|
}
|