From c8297534cc0c98307338aa4c00412b7aa550dd90 Mon Sep 17 00:00:00 2001 From: David Allen Date: Wed, 28 Aug 2024 12:34:49 -0600 Subject: [PATCH 1/5] Added version command and corresponding implementation --- cmd/version.go | 24 ++++++++++++++++++++++++ internal/version.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 cmd/version.go create mode 100644 internal/version.go diff --git a/cmd/version.go b/cmd/version.go new file mode 100644 index 0000000..be17843 --- /dev/null +++ b/cmd/version.go @@ -0,0 +1,24 @@ +package cmd + +import ( + "fmt" + + magellan "github.com/OpenCHAMI/magellan/internal" + "github.com/spf13/cobra" +) + +var versionCmd = &cobra.Command{ + Use: "version", + Run: func(cmd *cobra.Command, args []string) { + if cmd.Flag("rev").Value.String() == "true" { + fmt.Println(magellan.VersionCommit()) + } else { + fmt.Println(magellan.VersionTag()) + } + }, +} + +func init() { + versionCmd.Flags().Bool("rev", false, "show the version commit") + rootCmd.AddCommand(versionCmd) +} diff --git a/internal/version.go b/internal/version.go new file mode 100644 index 0000000..f11b47a --- /dev/null +++ b/internal/version.go @@ -0,0 +1,42 @@ +package magellan + +import ( + "fmt" + "os/exec" + "strings" +) + +// VersionCommit() returns a string with 'r{commit_count}.{commit_version}' format. +func VersionCommit() string { + var ( + version string + revlist []byte + revparse []byte + err error + ) + revlist, err = exec.Command("git", "rev-list", "--count", "HEAD").Output() + if err != nil { + return "" + } + + revparse, err = exec.Command("git", "rev-parse", "--short", "HEAD").Output() + if err != nil { + return "" + } + version = fmt.Sprintf("r%s.%s", strings.TrimRight(string(revlist), "\n"), string(revparse)) + return strings.TrimRight(version, "\n") +} + +// VersionTag() returns a string with format '{git_tag}' using the `git describe` command. +func VersionTag() string { + var ( + describe []byte + err error + ) + describe, err = exec.Command("git", "describe", "--long", "HEAD").Output() + if err != nil { + return "" + } + + return strings.TrimRight(string(describe), "\n") +} From 331c515ad27c74f7da60953f705fe92f0bc20dd2 Mon Sep 17 00:00:00 2001 From: David Allen Date: Wed, 28 Aug 2024 13:17:50 -0600 Subject: [PATCH 2/5] Removed internal version implementation --- internal/version.go | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 internal/version.go diff --git a/internal/version.go b/internal/version.go deleted file mode 100644 index f11b47a..0000000 --- a/internal/version.go +++ /dev/null @@ -1,42 +0,0 @@ -package magellan - -import ( - "fmt" - "os/exec" - "strings" -) - -// VersionCommit() returns a string with 'r{commit_count}.{commit_version}' format. -func VersionCommit() string { - var ( - version string - revlist []byte - revparse []byte - err error - ) - revlist, err = exec.Command("git", "rev-list", "--count", "HEAD").Output() - if err != nil { - return "" - } - - revparse, err = exec.Command("git", "rev-parse", "--short", "HEAD").Output() - if err != nil { - return "" - } - version = fmt.Sprintf("r%s.%s", strings.TrimRight(string(revlist), "\n"), string(revparse)) - return strings.TrimRight(version, "\n") -} - -// VersionTag() returns a string with format '{git_tag}' using the `git describe` command. -func VersionTag() string { - var ( - describe []byte - err error - ) - describe, err = exec.Command("git", "describe", "--long", "HEAD").Output() - if err != nil { - return "" - } - - return strings.TrimRight(string(describe), "\n") -} From fa8f31e8d3c4ba39f5d0410999bd3168478633c4 Mon Sep 17 00:00:00 2001 From: David Allen Date: Wed, 28 Aug 2024 13:18:14 -0600 Subject: [PATCH 3/5] Updated makefile to build with ldflags --- Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index f8de63c..67168df 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,12 @@ ifndef VERSION $(error VERSION is not set. Please review and copy config.env.default to config.env and try again) endif +ifndef BUILD +$(error BUILD is not set. Please review and copy config.env.default to config.env and try again) +endif + +LDFLAGS="-s -X=$(GIT)main.commit=$(BUILD) -X=$(GIT)main.version=$(VERSION) -X=$(GIT)main.date=$(shell date +%Y-%m-%d:%H:%M:%S)" + SHELL := /bin/bash GOPATH ?= $(shell echo $${GOPATH:-~/go}) @@ -54,8 +60,8 @@ release: ## goreleaser build $(GOPATH)/bin/goreleaser build --clean --single-target --snapshot .PHONY: build -build: ## goreleaser build - go build --tags=all +build: ## go build + go build -v --tags=all -ldflags=$(LDFLAGS) -o $(NAME) main.go .PHONY: docker container: ## docker build From 1e1498206e1db534158ed7f8973b62a3c8fbc017 Mon Sep 17 00:00:00 2001 From: David Allen Date: Wed, 28 Aug 2024 13:18:40 -0600 Subject: [PATCH 4/5] Update config.env to include BUILD --- config.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.env b/config.env index e92c519..dc6632d 100644 --- a/config.env +++ b/config.env @@ -2,4 +2,4 @@ NAME=magellan VERSION=$(shell git describe --tags --abbrev=0) - +BUILD=$(shell git rev-parse --short HEAD) From b4efe756b0aeca1475e8624112ebb160ba9f1eca Mon Sep 17 00:00:00 2001 From: David Allen Date: Wed, 28 Aug 2024 13:19:21 -0600 Subject: [PATCH 5/5] Updated version command and main to handle building with version info --- cmd/version.go | 26 +++++++++++++++++++++----- main.go | 7 +++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/cmd/version.go b/cmd/version.go index be17843..3ffff17 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -3,22 +3,38 @@ package cmd import ( "fmt" - magellan "github.com/OpenCHAMI/magellan/internal" "github.com/spf13/cobra" ) +var ( + version string + commit string + date string + output string +) + var versionCmd = &cobra.Command{ Use: "version", Run: func(cmd *cobra.Command, args []string) { - if cmd.Flag("rev").Value.String() == "true" { - fmt.Println(magellan.VersionCommit()) + if cmd.Flag("commit").Value.String() == "true" { + output = commit + if date != "" { + output += " built @ " + date + } + fmt.Println(output) } else { - fmt.Println(magellan.VersionTag()) + fmt.Println(version) } }, } func init() { - versionCmd.Flags().Bool("rev", false, "show the version commit") + versionCmd.Flags().Bool("commit", false, "show the version commit") rootCmd.AddCommand(versionCmd) } + +func SetVersionInfo(buildVersion string, buildCommit string, buildDate string) { + version = buildVersion + commit = buildCommit + date = buildDate +} diff --git a/main.go b/main.go index ebe2d95..0d248c4 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,13 @@ import ( "github.com/OpenCHAMI/magellan/cmd" ) +var ( + version string + commit string + date string +) + func main() { + cmd.SetVersionInfo(version, commit, date) cmd.Execute() }