From 1c4d8577b095f3b3610e17e5b815d79f8ba63fd4 Mon Sep 17 00:00:00 2001 From: Thibault Richard Date: Thu, 25 Jul 2024 12:23:55 +0200 Subject: [PATCH] Support version on go install --- main.go | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index caaf38c..cac195a 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,7 @@ package main import ( "fmt" "os" + "runtime/debug" "strings" "time" @@ -38,7 +39,7 @@ func main() { Short: "Generate CRD reference documentation", SilenceUsage: true, SilenceErrors: true, - Version: version(), + Version: printVersion(), RunE: doRun, } @@ -150,6 +151,48 @@ var ( buildCommit string ) +func printVersion() string { + return fmt.Sprintf("Version: %s\nGitCommit: %s\nBuildDate: %s\n", version(), commit(), date()) +} + func version() string { - return fmt.Sprintf("Version: %s\nGitCommit: %s\nBuildDate: %s\n", buildVersion, buildCommit, buildDate) + if buildVersion != "" { + return buildVersion + } + bi, ok := debug.ReadBuildInfo() + if !ok || bi == nil || bi.Main.Version == "" { + // binary has not been built with module support or doesn't contain a version + return "(unknown)" + } + return bi.Main.Version +} + +func date() string { + if buildDate != "" { + return buildDate + } + bi, ok := debug.ReadBuildInfo() + if ok { + for _, setting := range bi.Settings { + if setting.Key == "vcs.time" { + return setting.Value + } + } + } + return "(unknown)" +} + +func commit() string { + if buildCommit != "" { + return buildCommit + } + bi, ok := debug.ReadBuildInfo() + if ok { + for _, setting := range bi.Settings { + if setting.Key == "vcs.revision" { + return setting.Value + } + } + } + return "(unknown)" }