.PHONY: test lint fmt fmt-check check build run dev deps docker clean hooks css

# Default target
.DEFAULT_GOAL := check

test:
	go test -v -race -timeout 30s ./...

lint:
	golangci-lint run --config .golangci.yml ./...

fmt:
	gofmt -s -w .
	@command -v goimports >/dev/null 2>&1 && goimports -w . || true

fmt-check:
	@test -z "$$(gofmt -s -l .)" || { echo "gofmt needed on:"; gofmt -s -l .; exit 1; }

check: fmt-check lint test build

build:
	go build -o bin/webhooker ./cmd/webhooker

run: build
	./bin/webhooker

dev:
	go run ./cmd/webhooker

deps:
	go mod download
	go mod tidy

docker:
	docker build -t webhooker:latest .

clean:
	rm -rf bin/

hooks:
	@printf '#!/bin/sh\nmake check\n' > .git/hooks/pre-commit
	@chmod +x .git/hooks/pre-commit
	@echo "pre-commit hook installed"

css:
	tailwindcss -i static/css/input.css -o static/css/tailwind.css --minify
