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

# Default target
.DEFAULT_GOAL := check

# Version stamped into the binary. Derived from git by script/version;
# override it (`make build VERSION=v1.2.3`) where git metadata is
# unavailable, which is how the Dockerfile passes its build arg in.
VERSION ?= $(shell script/version)

# An empty override (`make build VERSION=`, or a `--build-arg VERSION=`
# landing on the Dockerfile's `make build VERSION="$VERSION"`) means unset,
# exactly as it does in script/version -- stamping "" would leave the binary
# reporting no version and the footer back on its "dev" fallback. `override`
# is required: a plain assignment loses to the command-line definition it
# exists to correct.
override VERSION := $(or $(strip $(VERSION)),$(shell script/version))

# Extra linker flags for the build target. The static relink in the
# Dockerfile adds -extldflags here rather than passing its own -ldflags,
# so composing flags cannot drop the version stamp.
GO_LDFLAGS ?=

bootstrap:
	@script/bootstrap

setup:
	@script/setup

assets:
	@script/fetch-assets

test:
	@script/test

lint:
	@script/lint

fmt:
	@script/fmt

fmt-check:
	@script/fmt-check

check:
	@script/check

build:
	go build -ldflags '$(strip -X main.version=$(VERSION) $(GO_LDFLAGS))' -o bin/webhooker ./cmd/webhooker

run: build
	./bin/webhooker

dev:
	go run ./cmd/webhooker

deps:
	go mod download
	go mod tidy

version:
	@echo $(VERSION)

docker:
	@script/docker

clean:
	rm -rf bin/

hooks:
	@script/install-precommit

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