PACKAGES=`find ./pkg -mindepth 1 -maxdepth 1 -type d`
BINARIES=`find ./cmd -mindepth 1 -maxdepth 1 -type d`
ENV=dev
NOW=$(shell date +'%y.%m.%d-%H:%M:%S')

lint:
	goimports -l $(PACKAGES) $(BINARIES)
	gofmt -l $(PACKAGES) $(BINARIES)
	errcheck $(PACKAGES) $(BINARIES)
	golint $(PACKAGES) $(BINARIES)
	go vet $(PACKAGES) $(BINARIES)

test: lint
	for p in $(PACKAGES) $(BINARIES); do go test -race -covermode=atomic $${p}; done

clean:
	rm -rf bin

rtmp: clean
	GOOS=linux go build -ldflags "-w -s" -o ./bin/moonlight-rtmp ./cmd/moonlight-rtmp
	GOOS=linux go build -ldflags "-w -s" -o ./bin/moonlight-rtmpworker ./cmd/moonlight-rtmpworker
	GOOS=linux go build -ldflags "-w -s" -o ./bin/moonlight-rtmp-internalworker ./cmd/moonlight-rtmp-internalworker

deploy: rtmp
	rm -rf deploy && mkdir -p deploy/moonlight-rtmp-deploy && mkdir -p deploy/artifacts
	cp -R codedeploy/* deploy/moonlight-rtmp-deploy
	cp -R bin deploy/moonlight-rtmp-deploy
	cd deploy/moonlight-rtmp-deploy && tar -zcvf ../artifacts/moonlight-rtmp-$(NOW).tar.gz ./
	aws s3 --profile twitch-irl-$(ENV) sync deploy/artifacts s3://twitch-irl-$(ENV)-rtmp-deploy/

mocks:
	counterfeiter pkg/aws/backend/backend.go Client

testcov: lint
	go get github.com/axw/gocov/gocov
	go get github.com/t-yuki/gocov-xml
	gocov test $(PACKAGES) $(BINARIES) > test_coverage.json
	gocov-xml < test_coverage.json > test_coverage.xml

deps:
	@echo "Updating dependencies..."
	dep ensure -update
	@echo "Dependency versions:"
	@dep status
	@echo "Remember: git add vendor/"
