.PHONY: all bootstrap setup build version lint fmt fmt-check test check clean hooks docker

BINARY := dnswatcher
# VERSION given on the command line (`make build VERSION=...`) or in the
# environment, which is how the Dockerfile's VERSION build arg arrives,
# wins over what `git describe` says of this checkout. An empty one counts
# as not given; `override` is what replaces an empty command-line value.
ifeq ($(VERSION),)
override VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
endif
LDFLAGS := -X main.Version=$(VERSION)

# Standard targets are thin shims; the implementations live in script/
# per the scripts-to-rule-them-all pattern (see the Entrypoints section
# of README.md).

all: check build

bootstrap:
	@script/bootstrap

setup:
	@script/setup

build:
	go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) ./cmd/dnswatcher

# Prints the version `make build` stamps; the Dockerfile checks it.
version:
	@echo "$(VERSION)"

test:
	@script/test

lint:
	@script/lint

fmt:
	@script/fmt

fmt-check:
	@script/fmt-check

check:
	@script/check

docker:
	@script/docker

hooks:
	@script/install-precommit

clean:
	rm -rf bin/
