
COMMIT := $(shell git rev-parse --short HEAD)
IMG ?= $(REGISTRY)/audit-kong:$(COMMIT)

.PHONY: build docker-build docker-push run test clean

BIN_NAME=audit-kong
BUILD_DIR=bin
LOCAL_BIN = $(CURDIR)/bin

build:
	go build -o $(BUILD_DIR)/$(BIN_NAME) ./main.go

docker-build: build
	docker build -f Dockerfile -t ${IMG} .

docker-push:
	docker push ${IMG}

run:
	go run ./main.go

test:
	go test -v ./...

clean:
	rm -rf $(BUILD_DIR)

GOLANGCI_LINT_BIN := $(LOCAL_BIN)/golangci-lint
GOLANGCI_LINT_VERSION ?= v2.11.4

.PHONY: install-lint
install-lint:
	@echo "Checking for golangci-lint..."
	@if [ ! -x "$(GOLANGCI_LINT_BIN)" ]; then \
		echo "Installing golangci-lint $(GOLANGCI_LINT_VERSION) to $(LOCAL_BIN)..."; \
		GOBIN=$(LOCAL_BIN) go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION); \
	else \
		echo "golangci-lint already installed at $(GOLANGCI_LINT_BIN)"; \
	fi

.PHONY: lint
lint: install-lint
	$(GOLANGCI_LINT_BIN) run --timeout 5m

.PHONY: lint-fix
lint-fix: install-lint
	$(GOLANGCI_LINT_BIN) run --fix
