.PHONY: gen-cert build-weather build-poller gen-cert dev-dependencies cert-info cert-info-remote curl-test clean get-root-ca
.EXPORT_ALL_VARIABLES:

GOARCH=amd64
# GOARCH=arm
GOOS=darwin
# GOOS=linux
LDFLAGS=-w -s -X go/weather/internal/version.Version=$$(git rev-list -1 HEAD)
GOBUILDFLAGS=-tags dev
CGO_ENABLED=0

DOCKER_BUILDKIT=1

WEATHER_VERSION=1.0.0
POLLER_VERSION=1.0.0
DOMAIN_ALIAS=weather.localdomain,weather-dev.localdomain

build: build-poller build-weather

build-weather: dependencies
	@echo "build for os $$GOOS and arch $$GOARCH"
	go build -o bin/weather-$(GOOS)-$(GOARCH) -ldflags="$(LDFLAGS)" $(GOBUILDFLAGS) cmd/weather/main.go

build-poller: dependencies
	@echo "build for os $$GOOS and arch $$GOARCH"
	go build -o bin/poller-$(GOOS)-$(GOARCH) -ldflags="$(LDFLAGS)" $(GOBUILDFLAGS) cmd/poller/main.go

gen-cert:
	cfssl gencert -config certs/client-config.json -profile server -hostname $(DOMAIN_ALIAS) certs/client-csr.json | cfssljson -bare certs/out/weather

dependencies:
	go mod download
	go mod verify

dev-dependencies:
	go get github.com/cloudflare/cfssl/cmd/cfssl
	go get github.com/cloudflare/cfssl/cmd/cfssljson
	go get github.com/cloudflare/cfssl/cmd/mkbundle

cert-info:
	cfssl certinfo -cert certs/out/weather.pem

cert-info-remote:
	cfssl certinfo -domain weather.localdomain:8080

curl-test:
	curl --cacert certs/out/ca.pem https://weather.localdomain:8080

clean:
	rm -rf bin/*

get-root-ca:
	cfssl info -remote rasp1.localdomain:444 -config certs/client-config.json | cfssljson -bare -stdout /dev/stdout | tee certs/out/ca.pem

docker: docker-build-poller docker-build-weather

docker-build-poller:
	docker build --force-rm -t docker.registry:5000/weather/poller:$(POLLER_VERSION) --build-arg POLLER_VERSION=$(POLLER_VERSION) -f DockerfilePoller .
	docker push docker.registry:5000/weather/poller:$(POLLER_VERSION)

docker-build-weather:
	docker build --force-rm -t docker.registry:5000/weather/server:$(WEATHER_VERSION) --build-arg WEATHER_VERSION=$(WEATHER_VERSION) -f DockerfileWeather .
	docker push docker.registry:5000/weather/server:$(WEATHER_VERSION)

change-log-level:
	curl https://127.0.0.1:8080/api/log -k -X PUT -d '{"level": "debug"}'