PACKAGES=`find ./pkg -mindepth 1 -maxdepth 1 -type d`
BINARIES=`find ./cmd -mindepth 1 -maxdepth 1 -type d`
ENV="stg"

clean:
	rm -rf bin

proto:
	cd pkg/rpc && protoc --proto_path=$(GOPATH)/src:. --twirp_out=. --go_out=. --twirp_opt=paths=source_relative --go_opt=paths=source_relative ./carrot_stream_analysis.proto

mmdb:
	rm -rf mmdb
	mkdir mmdb
	curl https://packages.internal.justin.tv/artifactory/ip-twitch-geoip/current/GeoIP2-City.mmdb > ./mmdb/GeoIP2-City.mmdb
	curl https://packages.internal.justin.tv/artifactory/ip-twitch-geoip/current/GeoIP2-ISP.mmdb > ./mmdb/GeoIP2-ISP.mmdb

buildcdk: clean
	GOOS=linux go build -o ./bin/linux/carrot-stream-analysis -ldflags "-w -s" ./cmd/lambda/main.go
	rm -f ./bin/carrot-stream-analysis.zip && zip -r ./bin/carrot-stream-analysis.zip ./bin/linux/carrot-stream-analysis ./mmdb/GeoIP2-City.mmdb ./mmdb/GeoIP2-ISP.mmdb
	GOOS=linux go build -o ./bin/linux/carrot-flv-analyser -ldflags "-w -s" ./cmd/analyser/lambda/main.go
	rm -f ./bin/carrot-flv-analyser.zip && zip -r ./bin/carrot-flv-analyser.zip ./bin/linux/carrot-flv-analyser

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

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
