Cache runtime version metadata fallback
This commit is contained in:
@@ -2,14 +2,26 @@
|
||||
// public buildinfo facade.
|
||||
package runtimeinfo
|
||||
|
||||
import "runtime/debug"
|
||||
import (
|
||||
"runtime/debug"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var injectedVersion string
|
||||
|
||||
// Version returns the injected version or the running executable's main module
|
||||
// version, falling back to "dev" when neither provides a release identifier.
|
||||
func Version() string {
|
||||
return version(injectedVersion, debug.ReadBuildInfo)
|
||||
if injectedVersion != "" {
|
||||
return injectedVersion
|
||||
}
|
||||
return fallbackVersion()
|
||||
}
|
||||
|
||||
var fallbackVersion = newFallbackVersion(debug.ReadBuildInfo)
|
||||
|
||||
func newFallbackVersion(readBuildInfo func() (*debug.BuildInfo, bool)) func() string {
|
||||
return sync.OnceValue(func() string { return version("", readBuildInfo) })
|
||||
}
|
||||
|
||||
func version(injected string, readBuildInfo func() (*debug.BuildInfo, bool)) string {
|
||||
|
||||
Reference in New Issue
Block a user