GOARCH = arm64

BINARY = metrics-collector
BINARY_PROMETHEUS = prometheus

COMMIT=$(shell git rev-parse HEAD)
BRANCH=$(shell git rev-parse --abbrev-ref HEAD)

CURRENT_DIR=$(shell pwd)
BUILD_DIR=${CURRENT_DIR}/bin

LDFLAGS = -ldflags "-X main.COMMIT=${COMMIT} -X main.BRANCH=${BRANCH}"

metrics-collector-local:
	go build  ${LDFLAGS} -o "${BUILD_DIR}/${BINARY}-local" cmd/metrics-collector/main.go ; \

metrics-collector-linux: 
	GOOS=linux GOARCH=${GOARCH} go build cmd/metrics-collector/main.go ${LDFLAGS} -o "${BUILD_DIR}/${BINARY}-linux-${GOARCH}" cmd/metrics-collector/main.go ; \

prometheus-linux: 
	GOOS=linux GOARCH=${GOARCH} go build cmd/prometheus/main.go ${LDFLAGS} -o "${BUILD_DIR}/${BINARY}-linux-${GOARCH}" cmd/prometheus/main.go ; \

metrics-collector-darwin:
	GOOS=darwin GOARCH=${GOARCH} go build cmd/metrics-collector/main.go ${LDFLAGS} -o "${BUILD_DIR}/${BINARY}-darwin-${GOARCH}" cmd/metrics-collector/main.go ; \

prometheus-darwin:
	GOOS=darwin GOARCH=${GOARCH} go build cmd/prometheus/main.go ${LDFLAGS} -o "${BUILD_DIR}/${BINARY}-darwin-${GOARCH}" cmd/prometheus/main.go ; \

metrics-collector-windows:
	GOOS=windows GOARCH=${GOARCH} go build cmd/metrics-collector/main.go ${LDFLAGS} -o "${BUILD_DIR}/${BINARY}-darwin-${GOARCH}.exe" cmd/metrics-collector/main.go ; \

run:
	go run cmd/metrics-collector/main.go pipeline --config ./example/local-run-config.yaml --metrics-config ./example/metrics-config.yaml

prometheus-run:
	go run cmd/prometheus/main.go --config-path ./example/prometheus-config.yaml

mirrord-run:
	mirrord exec --config-file .mirrord/mirrord.yaml -- make run

build-pipeline:
	CGO_ENABLED=0 go build  ${LDFLAGS} -o "${BUILD_DIR}/${BINARY}" cmd/metrics-collector/main.go ; \

build-prometheus:
	CGO_ENABLED=0 go build  ${LDFLAGS} -o "${BUILD_DIR}/${BINARY_PROMETHEUS}" cmd/prometheus/main.go ; \

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

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

# Temporary public demo helpers for dev-prom-e2e Grafana.
dev-prom-e2e-public-up:
	bash tools/dev-prom-e2e/scripts/funnel-up.sh

dev-prom-e2e-public-down:
	bash tools/dev-prom-e2e/scripts/funnel-down.sh

dev-prom-e2e-public-status:
	bash tools/dev-prom-e2e/scripts/funnel-status.sh

# Should be called after `make docker-push`
.PHONY: docker-push dev-prom-e2e-public-up dev-prom-e2e-public-down dev-prom-e2e-public-status
docker-push:
	docker push ${IMG}
