abc9729e8e
errcheck flagged six unchecked Close() calls. The production write path in indexgen.ProcessDir now closes the index file explicitly after Execute and surfaces the close error so a deferred flush failure isn't lost; tests use _ = f.Close() since they don't care. Also adds a 'make fixstyle' target that runs gofmt -w over the tree, matching the convention used elsewhere. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
63 lines
2.2 KiB
Makefile
63 lines
2.2 KiB
Makefile
PROG := s3-genindex
|
|
MODULE := git.ipng.ch/ipng/s3-genindex
|
|
NATIVE_ARCH := $(shell go env GOARCH)
|
|
VERSION := ${shell head -1 debian/changelog | sed -n 's/.*(\([^)]*\)).*/\1/p'}
|
|
COMMIT_HASH := $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
|
DATE := $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
LDFLAGS := -s -w \
|
|
-X 'main.Version=$(VERSION)' \
|
|
-X 'main.Commit=$(COMMIT_HASH)' \
|
|
-X 'main.Date=$(DATE)'
|
|
|
|
# CGO_ENABLED=0 yields a fully static binary so the same .deb runs on
|
|
# any glibc/musl Linux of the matching arch. The AWS SDK and the rest
|
|
# of this codebase are pure Go, so this has no behavioural impact
|
|
# beyond switching net/dns to the pure-Go resolver.
|
|
export CGO_ENABLED := 0
|
|
|
|
.PHONY: help all build build-amd64 build-arm64 test pkg-deb fmt fixstyle vet lint check clean
|
|
|
|
help: ## Show this help
|
|
@printf "Usage: make <target>\n\nTargets:\n"
|
|
@awk -F ':.*## ' '/^[A-Za-z][A-Za-z0-9_-]*:.*## / {printf " %-16s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
|
|
all: build ## Alias for build (native arch)
|
|
|
|
build: ## Build the binary for the host architecture
|
|
mkdir -p build/$(NATIVE_ARCH)
|
|
go build -ldflags "$(LDFLAGS)" -o build/$(NATIVE_ARCH)/$(PROG) ./cmd/$(PROG)
|
|
|
|
build-amd64: ## Cross-build the binary for linux/amd64
|
|
mkdir -p build/amd64
|
|
GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o build/amd64/$(PROG) ./cmd/$(PROG)
|
|
|
|
build-arm64: ## Cross-build the binary for linux/arm64
|
|
mkdir -p build/arm64
|
|
GOOS=linux GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o build/arm64/$(PROG) ./cmd/$(PROG)
|
|
|
|
test: ## Run all Go unit tests
|
|
go test ./...
|
|
|
|
pkg-deb: build-amd64 build-arm64 ## Build .deb packages for amd64 and arm64
|
|
debian/build-deb.sh $(PROG) amd64 $(VERSION)
|
|
debian/build-deb.sh $(PROG) arm64 $(VERSION)
|
|
|
|
fmt: ## go fmt everything
|
|
go fmt ./...
|
|
|
|
fixstyle: ## Reformat the entire tree with gofmt
|
|
gofmt -w .
|
|
|
|
vet: ## go vet everything
|
|
go vet ./...
|
|
|
|
lint: ## golangci-lint, if installed
|
|
@if command -v golangci-lint >/dev/null 2>&1; then golangci-lint run; else echo "golangci-lint not installed, skipping"; fi
|
|
|
|
check: fmt vet lint test ## Format, vet, lint, and test
|
|
|
|
clean: ## Remove build artifacts
|
|
rm -rf build/
|
|
rm -f $(PROG) coverage.out coverage.html
|
|
find . -name index.html -delete
|