.PHONY: develop test glide mocks setup_osx

develop: sandstorm
	reflex -r '^local_conf|\.go$$' -R '^vendor/' -R '^__vendor/' -s -- go run cmd/zuma-app/main.go -conf="local_conf/zuma.json"

test: mocks
	goconvey ./...

glide:
	rm -rf __vendor/*
	glide up --strip-vendor
	# Cleanup
	glide-vc --only-code --no-tests --no-legal-files --use-lock-file --keep '**/*.json'

mocks:
	mockery -note @generated -inpkg -dir client -name Client
	mockery -note @generated -inpkg -dir backend -name Backender
	mockery -note @generated -inpkg -dir clients/dynamodb -name DynamoDB
	mockery -note @generated -inpkg -dir clients/sns -name Client
	mockery -note @generated -inpkg -dir clients/kinesis -name CommunityIndexer
	mockery -note @generated -inpkg -dir clients/spade -name Client
	mockery -note @generated -dir vendor/code.justin.tv/web/cohesion/client/v2 -name Client -print | sed 's/code.justin.tv\/chat\/zuma\/vendor\///' > app/mocks/cohesion/mock_Cohesion.go
	mockery -note @generated -dir vendor/code.justin.tv/chat/tmi/client -name Client -print | sed 's/code.justin.tv\/chat\/zuma\/vendor\///' > app/mocks/clue/mock_Clue.go
	mockery -note @generated -dir vendor/code.justin.tv/chat/badges/client -name Client -print | sed 's/code.justin.tv\/chat\/zuma\/vendor\///' > app/mocks/badges/mock_Client.go
	mockery -note @generated -dir vendor/code.justin.tv/common/goauthorization -name IDecoder -print | sed 's/code.justin.tv\/chat\/zuma\/vendor\///' > app/mocks/auth/mock_Client.go

fakes:
	counterfeiter backend Backender
	counterfeiter backend/enforcement Rule
	counterfeiter backend/enforcement Engine

setup_osx:
	brew install glide
	go get -u github.com/sgotti/glide-vc
	go get -u code.justin.tv/systems/sandstorm-agent
	go get -u github.com/cespare/reflex
	go get -u github.com/smartystreets/goconvey/
	go get -u github.com/vektra/mockery/...
	go get -u github.com/maxbrunsfeld/counterfeiter

sandstorm:
	sandstorm-agent run local_conf
