export DEBUG = routewatch

# Git revision for version embedding
GIT_REVISION := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
GIT_REVISION_SHORT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
VERSION_PKG := git.eeqj.de/sneak/routewatch/internal/version
LDFLAGS := -X $(VERSION_PKG).GitRevision=$(GIT_REVISION) -X $(VERSION_PKG).GitRevisionShort=$(GIT_REVISION_SHORT)

.PHONY: bootstrap setup check test lint fmt fmt-check docker hooks build clean run asupdate

all: test

# Install all development dependencies.
bootstrap:
	@script/bootstrap

# Prepare a fresh clone: bootstrap plus pre-commit hook.
setup:
	@script/setup

# Combined pre-commit/CI gate: tests, lint, format check.
check:
	@script/check

test:
	@script/test

fmt:
	@script/fmt

# Check if code is formatted (read-only).
fmt-check:
	@script/fmt-check

lint:
	@script/lint

# Build Docker image.
docker:
	@script/docker

# Install pre-commit hook.
hooks:
	@script/install-precommit

build:
	CGO_ENABLED=1 go build -ldflags "$(LDFLAGS)" -o bin/routewatch cmd/routewatch/main.go

clean:
	rm -rf bin/

run: build
	DEBUG=routewatch ./bin/routewatch 2>&1 | tee log.txt

asupdate:
	@echo "Updating AS info data..."
	@go run cmd/asinfo-gen/main.go | gzip > pkg/asinfo/asdata.json.gz.tmp && \
		mv pkg/asinfo/asdata.json.gz.tmp pkg/asinfo/asdata.json.gz
