dev: improve version output (#4483)
This commit is contained in:
parent
85e1dee09a
commit
d18acc5b51
@ -13,31 +13,64 @@ var (
|
||||
goVersion = "unknown"
|
||||
|
||||
// Populated by goreleaser during build
|
||||
version = "master"
|
||||
version = "unknown"
|
||||
commit = "?"
|
||||
date = ""
|
||||
)
|
||||
|
||||
func main() {
|
||||
if buildInfo, available := debug.ReadBuildInfo(); available {
|
||||
goVersion = buildInfo.GoVersion
|
||||
|
||||
if date == "" {
|
||||
version = buildInfo.Main.Version
|
||||
commit = fmt.Sprintf("(unknown, mod sum: %q)", buildInfo.Main.Sum)
|
||||
date = "(unknown)"
|
||||
}
|
||||
}
|
||||
|
||||
info := commands.BuildInfo{
|
||||
GoVersion: goVersion,
|
||||
Version: version,
|
||||
Commit: commit,
|
||||
Date: date,
|
||||
}
|
||||
info := createBuildInfo()
|
||||
|
||||
if err := commands.Execute(info); err != nil {
|
||||
_, _ = fmt.Fprintf(os.Stderr, "failed executing command with error %v\n", err)
|
||||
os.Exit(exitcodes.Failure)
|
||||
}
|
||||
}
|
||||
|
||||
func createBuildInfo() commands.BuildInfo {
|
||||
info := commands.BuildInfo{
|
||||
Commit: commit,
|
||||
Version: version,
|
||||
GoVersion: goVersion,
|
||||
Date: date,
|
||||
}
|
||||
|
||||
if buildInfo, available := debug.ReadBuildInfo(); available {
|
||||
info.GoVersion = buildInfo.GoVersion
|
||||
|
||||
if date == "" {
|
||||
info.Version = buildInfo.Main.Version
|
||||
|
||||
var revision string
|
||||
var modified string
|
||||
for _, setting := range buildInfo.Settings {
|
||||
// The `vcs.xxx` information is only available with `go build`.
|
||||
// This information is are not available with `go install` or `go run`.
|
||||
switch setting.Key {
|
||||
case "vcs.time":
|
||||
info.Date = setting.Value
|
||||
case "vcs.revision":
|
||||
revision = setting.Value
|
||||
case "vcs.modified":
|
||||
modified = setting.Value
|
||||
}
|
||||
}
|
||||
|
||||
if revision == "" {
|
||||
revision = "unknown"
|
||||
}
|
||||
|
||||
if modified == "" {
|
||||
modified = "?"
|
||||
}
|
||||
|
||||
if info.Date == "" {
|
||||
info.Date = "(unknown)"
|
||||
}
|
||||
|
||||
info.Commit = fmt.Sprintf("(%s, modified: %s, mod sum: %q)", revision, modified, buildInfo.Main.Sum)
|
||||
}
|
||||
}
|
||||
|
||||
return info
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user