From 0603a13b79a94a2c65dd2a9507398e70dd5e76c6 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Sat, 21 Mar 2020 22:04:37 -0400 Subject: [PATCH] Use buildInfo.Main.Version when Version is not set --- main.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index a838123..3fab753 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ import ( "path/filepath" "regexp" "runtime" + "runtime/debug" "strings" "sync" @@ -78,8 +79,10 @@ const advancedUsage = `Advanced options: ` -// Version is set more precisely at build time. -var Version = "v1.4.1-dev" +// Version can be set at link time to override debug.BuildInfo.Main.Version, +// which is "(devel)" when building from within the module. See +// golang.org/issue/29814 and golang.org/issue/29228. +var Version string func main() { log.SetFlags(0) @@ -108,7 +111,13 @@ func main() { return } if *versionFlag { - fmt.Println(Version) + if Version != "" { + fmt.Println(Version) + } + if buildInfo, ok := debug.ReadBuildInfo(); ok { + fmt.Println(buildInfo.Main.Version) + } + fmt.Println("(unknown)") return } if *carootFlag {