Add check-go guard with friendly message for missing Go toolchain
Some checks failed
CI / Test (pull_request) Failing after 47s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
CI / Build-2 (pull_request) Has been skipped
CI / Build-3 (pull_request) Has been skipped
CI / Build-4 (pull_request) Has been skipped
Some checks failed
CI / Test (pull_request) Failing after 47s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
CI / Build-2 (pull_request) Has been skipped
CI / Build-3 (pull_request) Has been skipped
CI / Build-4 (pull_request) Has been skipped
This commit is contained in:
parent
79d08fb63c
commit
af0383108b
1 changed files with 44 additions and 16 deletions
60
Makefile
60
Makefile
|
|
@ -20,32 +20,60 @@ GOVET := $(GOCMD) vet
|
||||||
# Cross-compilation targets
|
# Cross-compilation targets
|
||||||
TARGETS := linux-amd64 linux-arm64 darwin-arm64 windows-amd64 windows-arm64
|
TARGETS := linux-amd64 linux-arm64 darwin-arm64 windows-amd64 windows-arm64
|
||||||
|
|
||||||
# Platform detection
|
# Platform detection (noiseless fallback — true check happens in check-go target)
|
||||||
GOOS := $(shell go env GOOS)
|
GOOS := $(shell go env GOOS 2>/dev/null || echo "unknown")
|
||||||
GOARCH := $(shell go env GOARCH)
|
GOARCH := $(shell go env GOARCH 2>/dev/null || echo "unknown")
|
||||||
|
|
||||||
|
# ──────────────────────────────────────────────
|
||||||
|
# Friendly Go-not-found guard
|
||||||
|
check-go:
|
||||||
|
@if ! command -v go >/dev/null 2>&1; then \
|
||||||
|
echo ""; \
|
||||||
|
echo " ╭──────────────────────────────────────────────╮"; \
|
||||||
|
echo " │ ⚠ Go is not installed on this machine │"; \
|
||||||
|
echo " ├──────────────────────────────────────────────┤"; \
|
||||||
|
echo " │ │"; \
|
||||||
|
echo " │ obm is a Go project. You need the Go │"; \
|
||||||
|
echo " │ toolchain to build from source. │"; \
|
||||||
|
echo " │ │"; \
|
||||||
|
echo " │ Install Go: │"; \
|
||||||
|
echo " │ Linux: your package manager │"; \
|
||||||
|
echo " │ or https://go.dev/dl/ │"; \
|
||||||
|
echo " │ │"; \
|
||||||
|
echo " │ macOS: brew install go │"; \
|
||||||
|
echo " │ │"; \
|
||||||
|
echo " │ Windows: https://go.dev/dl/ │"; \
|
||||||
|
echo " │ │"; \
|
||||||
|
echo " │ Or use the all-in-one script: │"; \
|
||||||
|
echo " │ ./scripts/install.sh │"; \
|
||||||
|
echo " │ │"; \
|
||||||
|
echo " ╰──────────────────────────────────────────────╯"; \
|
||||||
|
echo ""; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
all: lint test build
|
all: lint test build
|
||||||
|
|
||||||
build:
|
build: check-go
|
||||||
@echo "Building $(BINARY) v$(VERSION) for $(GOOS)/$(GOARCH)..."
|
@echo "Building $(BINARY) v$(VERSION) for $(GOOS)/$(GOARCH)..."
|
||||||
$(GOBUILD) $(LDFLAGS) -o $(BINARY) ./cmd/obm
|
$(GOBUILD) $(LDFLAGS) -o $(BINARY) ./cmd/obm
|
||||||
|
|
||||||
test:
|
test: check-go
|
||||||
@echo "Running tests..."
|
@echo "Running tests..."
|
||||||
$(GOTEST) -v -race -coverprofile=coverage.out ./...
|
$(GOTEST) -v -race -coverprofile=coverage.out ./...
|
||||||
|
|
||||||
lint: vet fmt
|
lint: vet fmt
|
||||||
@echo "✓ Lint pass"
|
@echo "✓ Lint pass"
|
||||||
|
|
||||||
vet:
|
vet: check-go
|
||||||
@echo "Running go vet..."
|
@echo "Running go vet..."
|
||||||
$(GOVET) ./...
|
$(GOVET) ./...
|
||||||
|
|
||||||
fmt:
|
fmt: check-go
|
||||||
@echo "Formatting code..."
|
@echo "Formatting code..."
|
||||||
gofmt -l -s -w .
|
gofmt -l -s -w .
|
||||||
|
|
||||||
clean:
|
clean: check-go
|
||||||
@echo "Cleaning..."
|
@echo "Cleaning..."
|
||||||
rm -f $(BINARY)
|
rm -f $(BINARY)
|
||||||
rm -f coverage.out
|
rm -f coverage.out
|
||||||
|
|
@ -67,7 +95,7 @@ version:
|
||||||
@echo "$(VERSION)"
|
@echo "$(VERSION)"
|
||||||
|
|
||||||
# Cross-compilation
|
# Cross-compilation
|
||||||
cross-compile:
|
cross-compile: check-go
|
||||||
@echo "Cross-compiling for all platforms..."
|
@echo "Cross-compiling for all platforms..."
|
||||||
@mkdir -p bin
|
@mkdir -p bin
|
||||||
@for target in $(TARGETS); do \
|
@for target in $(TARGETS); do \
|
||||||
|
|
@ -84,23 +112,23 @@ cross-compile:
|
||||||
@echo "✓ Cross-compilation complete"
|
@echo "✓ Cross-compilation complete"
|
||||||
|
|
||||||
# Build specific platform
|
# Build specific platform
|
||||||
build-linux-amd64:
|
build-linux-amd64: check-go
|
||||||
@mkdir -p bin
|
@mkdir -p bin
|
||||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/linux-amd64/$(BINARY) ./cmd/obm
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/linux-amd64/$(BINARY) ./cmd/obm
|
||||||
|
|
||||||
build-linux-arm64:
|
build-linux-arm64: check-go
|
||||||
@mkdir -p bin
|
@mkdir -p bin
|
||||||
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/linux-arm64/$(BINARY) ./cmd/obm
|
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/linux-arm64/$(BINARY) ./cmd/obm
|
||||||
|
|
||||||
build-darwin-arm64:
|
build-darwin-arm64: check-go
|
||||||
@mkdir -p bin
|
@mkdir -p bin
|
||||||
GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/darwin-arm64/$(BINARY) ./cmd/obm
|
GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/darwin-arm64/$(BINARY) ./cmd/obm
|
||||||
|
|
||||||
build-windows-amd64:
|
build-windows-amd64: check-go
|
||||||
@mkdir -p bin
|
@mkdir -p bin
|
||||||
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/windows-amd64/$(BINARY).exe ./cmd/obm
|
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/windows-amd64/$(BINARY).exe ./cmd/obm
|
||||||
|
|
||||||
build-windows-arm64:
|
build-windows-arm64: check-go
|
||||||
@mkdir -p bin
|
@mkdir -p bin
|
||||||
GOOS=windows GOARCH=arm64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/windows-arm64/$(BINARY).exe ./cmd/obm
|
GOOS=windows GOARCH=arm64 CGO_ENABLED=0 $(GOBUILD) $(LDFLAGS) -o bin/windows-arm64/$(BINARY).exe ./cmd/obm
|
||||||
|
|
||||||
|
|
@ -140,10 +168,10 @@ dev: build test
|
||||||
@echo "✓ Development build complete"
|
@echo "✓ Development build complete"
|
||||||
|
|
||||||
# Quick test during development
|
# Quick test during development
|
||||||
quick-test:
|
quick-test: check-go
|
||||||
$(GOTEST) -race ./...
|
$(GOTEST) -race ./...
|
||||||
|
|
||||||
# Coverage report
|
# Coverage report
|
||||||
coverage: test
|
coverage: check-go test
|
||||||
$(GOCMD) tool cover -html=coverage.out -o coverage.html
|
$(GOCMD) tool cover -html=coverage.out -o coverage.html
|
||||||
@echo "Coverage report: coverage.html"
|
@echo "Coverage report: coverage.html"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue