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:
yinwm 2026-02-13 16:39:44 +08:00
parent a604cd7223
commit 411ec69579
2 changed files with 21 additions and 6 deletions

View file

@ -8,9 +8,10 @@ MAIN_GO=$(CMD_DIR)/main.go
# Version
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)
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?=go

View file

@ -36,6 +36,7 @@ import (
var (
version = "dev"
gitCommit string
buildTime string
goVersion string
)
@ -43,7 +44,11 @@ var (
const logo = "🦞"
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 != "" {
fmt.Printf(" Build: %s\n", buildTime)
}
@ -760,7 +765,16 @@ func statusCmd() {
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 {
fmt.Println("Config:", configPath, "✓")