version: Add moduleVersionFromBuildInfo

This adds correct version information for `gvproxy -version` when
it's installed using:
```
go install github.com/containers/gvisor-tap-vsock/cmd/gvproxy
```

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
This commit is contained in:
Christophe Fergeau
2023-11-15 12:06:52 +01:00
parent f64bf1988b
commit b61aa3acd8

View File

@@ -3,6 +3,7 @@ package types
import (
"flag"
"fmt"
"runtime/debug"
)
var (
@@ -22,7 +23,7 @@ func NewVersion(binaryName string) *version { //nolint:revive
}
func (ver *version) String() string {
return fmt.Sprintf("%s version %s", ver.binaryName, gitVersion)
return fmt.Sprintf("%s version %s", ver.binaryName, moduleVersion())
}
func (ver *version) AddFlag() {
@@ -32,3 +33,25 @@ func (ver *version) AddFlag() {
func (ver *version) ShowVersion() bool {
return ver.showVersion
}
func moduleVersion() string {
switch {
// This will be set when building from git using make
case gitVersion != "":
return gitVersion
// moduleVersionFromBuildInfo() will be set when using `go install`
default:
return moduleVersionFromBuildInfo()
}
}
func moduleVersionFromBuildInfo() string {
info, ok := debug.ReadBuildInfo()
if !ok {
return ""
}
if info.Main.Version == "(devel)" {
return ""
}
return info.Main.Version
}