Skip to content

Commit 7e4c789

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

File tree

1 file changed

+44
-12
lines changed

1 file changed

+44
-12
lines changed

cmd/version.go

Lines changed: 44 additions & 12 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,69 @@ 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)
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)
3436

35-
buildDate = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
37+
// "1970-01-01T00:00:00Z" build date in ISO8601 format
38+
// Output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
39+
buildDate = unknown
3640
)
3741

3842
// version contains all the information related to the CLI version
3943
type version struct {
4044
KubeBuilderVersion string `json:"kubeBuilderVersion"`
4145
KubernetesVendor string `json:"kubernetesVendor"`
42-
GitCommit string `json:"gitCommit"`
43-
BuildDate string `json:"buildDate"`
46+
GoVersion string `json:"goVersion"`
4447
GoOs string `json:"goOs"`
4548
GoArch string `json:"goArch"`
49+
GitCommit string `json:"gitCommit"`
50+
BuildDate string `json:"buildDate"`
4651
}
4752

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

5687
return fmt.Sprintf("Version: %#v", version{
5788
kubeBuilderVersion,
5889
kubernetesVendorVersion,
90+
goVersion,
91+
goOs,
92+
goArch,
5993
gitCommit,
6094
buildDate,
61-
goos,
62-
goarch,
6395
})
6496
}

0 commit comments

Comments
 (0)