.PHONY: all setup lint test build upgrade

all: build

setup:
	PATH=$$PWD/_tools/bin:$$PATH GOPATH=$$PWD/_tools go install \
		github.com/kisielk/errcheck \
		github.com/alecthomas/gometalinter \
		github.com/tsenart/deadcode \
		github.com/jgautheron/goconst/cmd/goconst \
		golang.org/x/tools/cmd/goimports \
		honnef.co/go/simple/cmd/gosimple

lint:
	# PATH=$$PWD/_tools/bin:$$PATH errcheck -blank ./...
	PATH=$$PWD/_tools/bin:$$PATH gometalinter --tests --vendor ./...  \
		--deadline 120s \
		--disable-all \
		--enable deadcode \
		--enable goconst \
		--enable gofmt \
		--enable goimports \
		--enable gosimple \
		--enable vetshadow

test:
	go test -race ./...

dep:
	dep ensure -vendor-only

todo:
	git grep -I -l TODO | xargs -n1 git blame -f -n -e -w | grep TODO: | cut -d ' ' -f2- | perl -pe 's/((?!_*?vendor|_*?tools|todo)[\w\/\.-]+?)\s+(\d+)\s+\(\<.+\@.+\..+\>\s+\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\s[-+]\d{4}\s+\d{1,}\)\s+(.+)/$$1:$$2\t$$3\t$$10/g' | grep -v -E -e '^_*vendor/' -e '^_*tools/' -e './todo.txt' | perl -pe 's/(.+)/- [ ] $$1/g' > ./todo.md

build:
	go build -o pong main.go

upgrade:
	glide up -u -v -s
	glide-vc --only-code --no-tests --use-lock-file --keep github.com/golang/protobuf/**

# `make env` to get everything stood up. makefiles can't change the existing env on their own.
# TODO: Makefile should tell you how to use make env if it's not executed like `make env`
env-staging: env
	export ENVIRONMENT=staging

env-dev: env
	export ENVIRONMENT=development
#	export pong__desk__payload_secret=
#	export pong__service_cloud__instance_url=
#	export pong__service_cloud__client_id=
#	export pong__service_cloud__client_secret=
#	export pong__service_cloud__username=
#	export pong__service_cloud__password=
#	export pong__service_cloud__security_token=
#	export pong__desk__instance_url="https://help.twitch.tv"
#	export pong__desk__consumer_key=
#	export pong__desk__consumer_secret=
#	export pong__desk__access_token=
#	export pong__desk__access_secret=
#	export pong__amazon_client__encryption__public_key=
#	export pong__amazon_client__decryption__private_key=

env-development: env-dev

env:
	export AWS_PROFILE=pong-staging
	export ROLLBAR_TOKEN=d17d83191ffc406ca353921781cef3b1
	export STATSD_HOST_PORT=localhost:8125

	export DESK_CLIENT_ENDPOINT=https://help.twitch.tv

	export AMAZON_CLIENT_TICKET_SQS_ACCOUNT_ID=256445009424
	export AMAZON_CLIENT_TICKET_SQS_REGION=us-west-2
	export AMAZON_CLIENT_TICKET_SQS_QUEUE_NAME=pong-ingress-queue

	export AMAZON_CLIENT_TICKET_ACK_SQS_REGION=us-west-2
	export AMAZON_CLIENT_TICKET_ACK_SQS_QUEUE_NAME=pong-staging-ingress-amazon-ack
	export AMAZON_CLIENT_TICKET_ACK_SQS_NUM_WORKERS=1

	export AMAZON_CLIENT_TWITCH_TICKET_SQS_REGION=us-west-2
	export AMAZON_CLIENT_TWITCH_TICKET_SQS_QUEUE_NAME=pong-staging-ingress-amazon
	export AMAZON_CLIENT_TWITCH_TICKET_SQS_NUM_WORKERS=1
