From eccc6d57cdca48cc7665147d1543a37aa00f4eaf Mon Sep 17 00:00:00 2001 From: Andrew Gillis Date: Wed, 19 Jun 2024 17:14:06 -0700 Subject: [PATCH] fix: --version flag includes release version (#149) The tagged release version should match the contents of version.json, so embed the version.json file and add the release version from it to the output from --version. Fixes #145 --- CHANGELOG.md | 1 + version.go | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7944f01..0c3c7b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The following emojis are used to highlight certain changes: ### Fixed - Added more buckets to the duration histogram metric to allow for tracking operations that take longer than 1 minute. +- Release version included in --version output. ### Security diff --git a/version.go b/version.go index ccda56b..a9de07e 100644 --- a/version.go +++ b/version.go @@ -1,22 +1,33 @@ package main import ( + _ "embed" + "encoding/json" + "fmt" "runtime/debug" "time" ) +//go:embed version.json +var versionJSON []byte + var name = "rainbow" var version = buildVersion() var userAgent = name + "/" + version func buildVersion() string { + // Read version from embedded JSON file. + var verMap map[string]string + json.Unmarshal(versionJSON, &verMap) + release := verMap["version"] + var revision string var day string var dirty bool info, ok := debug.ReadBuildInfo() if !ok { - return "dev-build" + return release + " dev-build" } for _, kv := range info.Settings { switch kv.Key { @@ -33,7 +44,7 @@ func buildVersion() string { revision += "-dirty" } if revision != "" { - return day + "-" + revision + return fmt.Sprintf("%s %s-%s", release, day, revision) } - return "dev-build" + return release + " dev-build" }