.PHONY: help build run test clean lint lint-fix install release-snapshot release-check

# Version derived from git tags; falls back to short SHA; appends -dirty if tree is modified.
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
LDFLAGS := -X 'forgejo.zerova.net/public/fgj-sid/cmd.version=$(VERSION)'

help:
	@echo "Available commands:"
	@echo "  make build      - Build the application (version: $(VERSION))"
	@echo "  make install    - Install the binary to /usr/bin"
	@echo "  make run        - Run the application"
	@echo "  make test       - Run tests"
	@echo "  make lint       - Run golangci-lint"
	@echo "  make lint-fix   - Run golangci-lint with auto-fix"
	@echo "  make clean      - Clean build artifacts"
	@echo "  make release-snapshot - Build snapshot release artifacts via goreleaser"
	@echo "  make release-check    - Validate .goreleaser.yaml"

build:
	go build -ldflags "$(LDFLAGS)" -o bin/fgj .

install: build
	install -Dm755 bin/fgj /usr/bin/fgj

run:
	go run .

test:
	go test -v -race ./...

lint:
	golangci-lint run ./...

lint-fix:
	golangci-lint run --fix ./...

clean:
	rm -rf bin/ dist/
	go clean

release-snapshot:
	goreleaser release --snapshot --clean --skip=publish

release-check:
	goreleaser check
