BUILD_DIR ?= build
PKG := code.justin.tv/twitch-events/gea
ABS-PKG := $(GOPATH)/src/$(PKG)
GIT_COMMIT ?= $(shell git rev-parse --verify HEAD)
ENVIRONMENT ?= development
GOBIN := $(CURDIR)/_bin
PATH := $(GOBIN):$(PATH)

precommit: fix fast_lint integration_test

run:
	env ENVIRONMENT=$(ENVIRONMENT) go run -race -ldflags "-X main.CodeVersion=$(GIT_COMMIT)" $(ABS-PKG)/cmd/gea/main.go

test:
	go test $(PKG)/...

integration_test:
	env ENVIRONMENT=$(ENVIRONMENT) go test -race -tags=integration $(PKG)/...

build-gea:
	env GOOS=linux go build \
		-ldflags "-X main.CodeVersion=$(GIT_COMMIT)" \
		-o $(BUILD_DIR)/gea/gea \
		$(PKG)/cmd/gea

db:
	docker pull docker.internal.justin.tv/twitch-events/oracle_db:latest
	docker run -d -p 5432:5432 docker.internal.justin.tv/twitch-events/oracle_db:latest

revendor:
	rm -rf ./vendor
	dep ensure

lint:
	cd $(ABS-PKG) && golangci-lint run

fast_lint:
	cd $(ABS-PKG) && golangci-lint run --fast

fix:
	find . -iname '*.go' -not -path '*/vendor/*' -print0 | xargs -0 gofmt -s -w
	find . -iname '*.go' -not -path '*/vendor/*' -print0 | xargs -0 goimports -w

zip_lambda:
	zip -rv terraform/index.zip ./lambda

mocks:
	mockery -dir ./cmd/gea/internal/api/ -name SpadeClient -output ./cmd/gea/internal/api/mocks

build_poller_image:
	script/build-tag-push.sh events poll-endpoint $(GIT_COMMIT) poller_Dockerfile

build-ecs-deploy:
	go build \
		-ldflags "-X main.CodeVersion=$(GIT_COMMIT)" \
		-o $(BUILD_DIR)/ecs-deploy/ecs-deploy \
		$(PKG)/cmd/update-gea-ecs-service

build-binaries: lint test build-gea build-ecs-deploy

jenkins-setup:
	@wget -O - -q https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(GOBIN) v1.21.0
