CHAOS_IMG ?= chaos-provider:latest

##@ build chaos-provider

# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
else
GOBIN=$(shell go env GOBIN)
endif

.PYTHON: build-chaos-provider
build-chaos-provider: ## Build chaos-provider binary.
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o bin/chaos-provider main.go

.PYTHON: docker-build-chaos-provider
docker-build-chaos-provider: build-chaos-provider
	mkdir -p helm-charts
	cp -r ../helm-charts helm-charts
	docker build -t ${CHAOS_IMG} .
	rm -rf helm-charts

.PYTHON: docker-push-chaos-provider
docker-push-chaos-provider:
	docker push ${CHAOS_IMG}

.PYTHON: reviewable
reviewable:
	go mod tidy
	git diff --exit-code

# go-get-tool will 'go get' any package $2 and install it to $1.
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
define go-get-tool
@[ -f $(1) ] || { \
set -e ;\
TMP_DIR=$$(mktemp -d) ;\
cd $$TMP_DIR ;\
go mod init tmp ;\
echo "Downloading $(2)" ;\
GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\
rm -rf $$TMP_DIR ;\
}
endef

lint:
	go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0
	golangci-lint run --fix -v $$($(LINT_PACKAGES)) --config .golangci.yml
	git diff --exit-code
