# Image URL to use all building/pushing image targets
REGISTRY ?= reg.k8s.giftfish.de/library
CONTROLLER_NAME ?= pve-cloud-controller-manager
APPROVER_NAME ?= pve-csr-approver-manager
CONTROLLER_IMG ?= $(REGISTRY)/$(CONTROLLER_NAME)
APPROVER_IMG ?= $(REGISTRY)/$(APPROVER_NAME)
TAG ?= dev
ARCH ?= amd64

PULL_POLICY ?= Always

# 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

all: manager

# Run tests
test: generate fmt vet manifests
	go test ./... -coverprofile cover.out

# Build manager binary
manager: generate fmt vet
	go build -o bin/manager main.go

# Run go fmt against code
fmt:
	go fmt ./...

# Run go vet against code
vet:
	go vet ./...

.PHONY: build-controller
build-controller:
	docker build --pull --build-arg ARCH=$(ARCH) --build-arg LDFLAGS="$(LDFLAGS)" -f images/$(CONTROLLER_NAME)/Dockerfile . -t $(CONTROLLER_IMG)-$(ARCH):$(TAG)

.PHONY: build-approver
build-approver:
	docker build --pull --build-arg ARCH=$(ARCH) --build-arg LDFLAGS="$(LDFLAGS)" -f images/$(APPROVER_NAME)/Dockerfile . -t $(APPROVER_IMG)-$(ARCH):$(TAG)

.PHONY: docker-build
docker-build: build-controller build-approver

.PHONY: push-controller
push-controller:
	docker push $(CONTROLLER_IMG)-$(ARCH):$(TAG)

.PHONY: push-approver
push-approver:
	docker push $(APPROVER_IMG)-$(ARCH):$(TAG)

.PHONY: docker-push
docker-push: push-controller push-approver
