Skip to content

Commit d7dd0cb

Browse files
[Improvement] Infer version information for go-install
Signed-off-by: Miguel Elias dos Santos <migueleliasweb@gmail.com>
1 parent ea6a7fb commit d7dd0cb

File tree

1 file changed

+42
-13
lines changed

1 file changed

+42
-13
lines changed

cmd/version.go

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package cmd
1818

1919
import (
2020
"fmt"
21+
"runtime"
2122
"runtime/debug"
2223
)
2324

@@ -27,38 +28,66 @@ const unknown = "unknown"
2728
// information in the release process
2829
var (
2930
kubeBuilderVersion = unknown
30-
kubernetesVendorVersion = unknown
31-
goos = unknown
32-
goarch = unknown
33-
gitCommit = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD)
34-
35-
buildDate = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
31+
kubernetesVendorVersion = "1.32.1"
32+
goVersion = unknown
33+
goOs = unknown
34+
goArch = unknown
35+
gitCommit = unknown // "$Format:%H$" sha1 from git, output of $(git rev-parse HEAD)
36+
buildDate = unknown // "1970-01-01T00:00:00Z" build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
3637
)
3738

3839
// version contains all the information related to the CLI version
3940
type version struct {
4041
KubeBuilderVersion string `json:"kubeBuilderVersion"`
4142
KubernetesVendor string `json:"kubernetesVendor"`
42-
GitCommit string `json:"gitCommit"`
43-
BuildDate string `json:"buildDate"`
43+
GoVersion string `json:"goVersion"`
4444
GoOs string `json:"goOs"`
4545
GoArch string `json:"goArch"`
46+
GitCommit string `json:"gitCommit"`
47+
BuildDate string `json:"buildDate"`
4648
}
4749

4850
// versionString returns the CLI version
4951
func versionString() string {
50-
if kubeBuilderVersion == unknown {
51-
if info, ok := debug.ReadBuildInfo(); ok && info.Main.Version != "" {
52-
kubeBuilderVersion = info.Main.Version
52+
if goVersion == unknown {
53+
goVersion = runtime.Version()
54+
}
55+
56+
if goOs == unknown {
57+
goOs = runtime.GOOS
58+
}
59+
60+
if goArch == unknown {
61+
goArch = runtime.GOARCH
62+
}
63+
64+
info, ok := debug.ReadBuildInfo()
65+
66+
if ok {
67+
if info.Main.Version != "" {
68+
if kubeBuilderVersion == unknown {
69+
kubeBuilderVersion = info.Main.Version
70+
}
71+
}
72+
73+
for _, setting := range info.Settings {
74+
if buildDate == unknown && setting.Key == "vcs.revision" {
75+
buildDate = setting.Value
76+
}
77+
78+
if gitCommit == unknown && setting.Key == "vcs.revision" {
79+
gitCommit = setting.Value
80+
}
5381
}
5482
}
5583

5684
return fmt.Sprintf("Version: %#v", version{
5785
kubeBuilderVersion,
5886
kubernetesVendorVersion,
87+
goVersion,
88+
goOs,
89+
goArch,
5990
gitCommit,
6091
buildDate,
61-
goos,
62-
goarch,
6392
})
6493
}

0 commit comments

Comments
 (0)