BINARY      ?= librenotes
OUTDIR      ?= .
CMD_PKG     ?= ./cmd/librenotes
GO          ?= go
GOFLAGS     ?=
LDFLAGS     ?= -X git.librete.ch/public/librenotes/internal/notesium.gitversion=$(shell git describe --tags --always --dirty 2>/dev/null || echo dev) \
               -X git.librete.ch/public/librenotes/internal/notesium.buildtime=$(shell date -u +%Y-%m-%dT%H:%M:%SZ)
TESTFLAGS   ?= -race -count=1

.PHONY: all build test lint run clean help

all: build

build:
	$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(OUTDIR)/$(BINARY) $(CMD_PKG)

test:
	$(GO) test $(TESTFLAGS) ./...

lint:
	$(GO) vet ./...
	@command -v staticcheck >/dev/null 2>&1 && staticcheck ./... || echo "staticcheck not installed, skipping"

run: build
	$(OUTDIR)/$(BINARY) $(ARGS)

clean:
	rm -f $(OUTDIR)/$(BINARY)
	rm -f *.test *.out coverage.out

help:
	@echo "Targets:"
	@echo "  build  - compile binary to \$$OUTDIR/\$$BINARY (default ./librenotes)"
	@echo "  test   - run all Go tests with race detector"
	@echo "  lint   - run go vet (+ staticcheck if installed)"
	@echo "  run    - build and run; pass args via ARGS=\"...\""
	@echo "  clean  - remove build artifacts"
