feat(cli): add git commit hash to version output
Users can now see the exact git commit used to build the binary, which helps with debugging and deployment tracking.
This commit is contained in:
3
Makefile
3
Makefile
@@ -8,9 +8,10 @@ MAIN_GO=$(CMD_DIR)/main.go
|
|||||||
|
|
||||||
# Version
|
# Version
|
||||||
VERSION?=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
VERSION?=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
||||||
|
GIT_COMMIT=$(shell git rev-parse --short=8 HEAD 2>/dev/null || echo "unknown")
|
||||||
BUILD_TIME=$(shell date +%FT%T%z)
|
BUILD_TIME=$(shell date +%FT%T%z)
|
||||||
GO_VERSION=$(shell $(GO) version | awk '{print $$3}')
|
GO_VERSION=$(shell $(GO) version | awk '{print $$3}')
|
||||||
LDFLAGS=-ldflags "-X main.version=$(VERSION) -X main.buildTime=$(BUILD_TIME) -X main.goVersion=$(GO_VERSION)"
|
LDFLAGS=-ldflags "-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT) -X main.buildTime=$(BUILD_TIME) -X main.goVersion=$(GO_VERSION)"
|
||||||
|
|
||||||
# Go variables
|
# Go variables
|
||||||
GO?=go
|
GO?=go
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
version = "dev"
|
version = "dev"
|
||||||
|
gitCommit string
|
||||||
buildTime string
|
buildTime string
|
||||||
goVersion string
|
goVersion string
|
||||||
)
|
)
|
||||||
@@ -43,7 +44,11 @@ var (
|
|||||||
const logo = "🦞"
|
const logo = "🦞"
|
||||||
|
|
||||||
func printVersion() {
|
func printVersion() {
|
||||||
fmt.Printf("%s picoclaw %s\n", logo, version)
|
fmt.Printf("%s picoclaw %s", logo, version)
|
||||||
|
if gitCommit != "" {
|
||||||
|
fmt.Printf(" (git: %s)", gitCommit)
|
||||||
|
}
|
||||||
|
fmt.Println()
|
||||||
if buildTime != "" {
|
if buildTime != "" {
|
||||||
fmt.Printf(" Build: %s\n", buildTime)
|
fmt.Printf(" Build: %s\n", buildTime)
|
||||||
}
|
}
|
||||||
@@ -760,7 +765,16 @@ func statusCmd() {
|
|||||||
|
|
||||||
configPath := getConfigPath()
|
configPath := getConfigPath()
|
||||||
|
|
||||||
fmt.Printf("%s picoclaw Status\n\n", logo)
|
fmt.Printf("%s picoclaw Status\n", logo)
|
||||||
|
fmt.Printf("Version: %s", version)
|
||||||
|
if gitCommit != "" {
|
||||||
|
fmt.Printf(" (git: %s)", gitCommit)
|
||||||
|
}
|
||||||
|
fmt.Println()
|
||||||
|
if buildTime != "" {
|
||||||
|
fmt.Printf("Build: %s\n", buildTime)
|
||||||
|
}
|
||||||
|
fmt.Println()
|
||||||
|
|
||||||
if _, err := os.Stat(configPath); err == nil {
|
if _, err := os.Stat(configPath); err == nil {
|
||||||
fmt.Println("Config:", configPath, "✓")
|
fmt.Println("Config:", configPath, "✓")
|
||||||
|
|||||||
Reference in New Issue
Block a user