From c8297534cc0c98307338aa4c00412b7aa550dd90 Mon Sep 17 00:00:00 2001 From: David Allen Date: Wed, 28 Aug 2024 12:34:49 -0600 Subject: [PATCH 01/10] 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 02/10] 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 03/10] 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 04/10] 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 05/10] 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() } From 1f159fae406bf411e21ec9da6675a67ae518c992 Mon Sep 17 00:00:00 2001 From: "David J. Allen" Date: Wed, 28 Aug 2024 17:45:45 -0600 Subject: [PATCH 06/10] Added PKGBUILD to install magellan as binary --- PKGBUILD | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 PKGBUILD diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..0af4fce --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,29 @@ +# Maintainer: David J. Allen +pkgname=magellan +pkgver=v0.1.5 +pkgrel=1 +pkgdesc="Redfish-based BMC discovery tool written in Go" +arch=("x86_64") +url="https://github.com/OpenCHAMI/magellan" +license=('MIT') +groups=("openchami") +provides=('magellan') +conflicts=('magellan') +source_x86_64=("${url}/releases/download/v${pkgver}/${pkgname}_Linux_x86_64.tar.gz") +sha256sums_x86_64=('1bb028d592d5389b519362e6aa7021f27443f0b36471e09ee7f47ab5cb6d4d7f') + +# Please refer to the 'USING VCS SOURCES' section of the PKGBUILD man page for +# a description of each element in the source array. + +pkgver() { + cd "$srcdir" || exit + printf "%s" "$(git describe --tags --abbrev=0)" +} + +package() { + cd "$srcdir/" || exit + + # install the binary to /usr/bin + mkdir -p "${pkgdir}/usr/bin" + install -m755 magellan "${pkgdir}/usr/bin/magellan" +} From f8da8ae1c385e12699fab9024aee80df3a7ffcca Mon Sep 17 00:00:00 2001 From: "David J. Allen" Date: Wed, 28 Aug 2024 17:46:02 -0600 Subject: [PATCH 07/10] Update .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index fa5476a..a34d429 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ magellan emulator/rf-emulator **/*.db dist/* +**.tar.gz +**.tar.zst +**.part From 5806bebce6d289c85ac7ec2d7defc0e910e1fd5c Mon Sep 17 00:00:00 2001 From: "David J. Allen" Date: Wed, 28 Aug 2024 17:55:48 -0600 Subject: [PATCH 08/10] Fixed minor typo --- PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PKGBUILD b/PKGBUILD index 0af4fce..23e69b7 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -9,7 +9,7 @@ license=('MIT') groups=("openchami") provides=('magellan') conflicts=('magellan') -source_x86_64=("${url}/releases/download/v${pkgver}/${pkgname}_Linux_x86_64.tar.gz") +source_x86_64=("${url}/releases/download/${pkgver}/${pkgname}_Linux_x86_64.tar.gz") sha256sums_x86_64=('1bb028d592d5389b519362e6aa7021f27443f0b36471e09ee7f47ab5cb6d4d7f') # Please refer to the 'USING VCS SOURCES' section of the PKGBUILD man page for From bc4a9ad5a9b7e951550c21dda98f7637f4fdbef2 Mon Sep 17 00:00:00 2001 From: "David J. Allen" Date: Wed, 28 Aug 2024 18:00:01 -0600 Subject: [PATCH 09/10] Update .gitignore removing dist/ --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index a34d429..96c3c6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ magellan emulator/rf-emulator **/*.db -dist/* **.tar.gz **.tar.zst **.part From 51ed5b308740019509dc5ba5be4d5ffc9ee99843 Mon Sep 17 00:00:00 2001 From: "David J. Allen" Date: Wed, 28 Aug 2024 18:02:29 -0600 Subject: [PATCH 10/10] Moved PKGBUILD into dist/archlinux --- PKGBUILD => dist/archlinux/PKGBUILD | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename PKGBUILD => dist/archlinux/PKGBUILD (100%) diff --git a/PKGBUILD b/dist/archlinux/PKGBUILD similarity index 100% rename from PKGBUILD rename to dist/archlinux/PKGBUILD