From b48f3274e6c9d94f83d342197c139d9228f99733 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Fri, 5 Apr 2024 21:45:57 +0200 Subject: [PATCH] Use goreleaser version if available, otherwise buildinfo --- cmd/root.go | 8 ++++++-- main.go | 5 +---- version.go | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 version.go diff --git a/cmd/root.go b/cmd/root.go index 7e3e4f3..b1274e1 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -121,6 +121,10 @@ func initConfig() { } } -func SetVersionInfo(version, commit, date string) { - rootCmd.Version = fmt.Sprintf("%s (Built on %s from Git SHA %s)", version, date, commit) +func SetVersionInfo(version, commit, date string, dirty bool) { + v := fmt.Sprintf("%s (Built on %s from Git SHA %s)", version, date, commit) + if dirty { + v = v + " dirty" + } + rootCmd.Version = v } diff --git a/main.go b/main.go index 06d1bea..1000fbf 100644 --- a/main.go +++ b/main.go @@ -1,13 +1,10 @@ package main import ( - "time" - - "github.com/carlmjohnson/versioninfo" "github.com/passbolt/go-passbolt-cli/cmd" ) func main() { - cmd.SetVersionInfo(versioninfo.Version, versioninfo.Revision, versioninfo.LastCommit.Format(time.RFC3339)) + cmd.SetVersionInfo(version, commit, date, dirty) cmd.Execute() } diff --git a/version.go b/version.go new file mode 100644 index 0000000..a5d9588 --- /dev/null +++ b/version.go @@ -0,0 +1,41 @@ +package main + +import ( + "runtime/debug" + "time" +) + +var ( + version = "unknown" + commit = "unknown" + date = "unknown" + dirty = false +) + +func init() { + // if not set by goreleaser, use buildinfo instead + if version == "unknown" { + info, ok := debug.ReadBuildInfo() + if !ok { + return + } + if info.Main.Version != "" { + version = info.Main.Version + } + + for _, kv := range info.Settings { + if kv.Value == "" { + continue + } + switch kv.Key { + case "vcs.revision": + commit = kv.Value + case "vcs.time": + d, _ := time.Parse(time.RFC3339, kv.Value) + date = d.String() + case "vcs.modified": + dirty = kv.Value == "true" + } + } + } +}