.PHONY: build
build: test
	go build -o plucky cmd/plucky/main.go

.PHONY: build-prod
build-prod : GIT_COMMIT = $(shell git rev-list -1 HEAD)
build-prod : VERSION = $(shell cat version.txt)
build-prod:
	cd ../web/ && npm run build
	go run cmd/gen-assets/main.go \
		-inputDir ../web/build \
		-outputFilePath ./assets/prod-assets.go \
		-tag prod
	go build \
		-o plucky \
		-tags=prod \
		-ldflags="-X main.Version=$(VERSION) -X main.GitCommit=$(GIT_COMMIT)" \
		cmd/plucky/main.go

.PHONY: fmt
fmt:
	find . -iname '*.go' \
		-not -path './vendor/*' \
		-not -path './_tools/*' \
		-not -path '*/mock/*' \
		-not -path '*/mocks/*' \
		-not -path './rpc/*'  \
		-print0 | xargs -0 goimports -w

.PHONY: run
run:
	go run ./cmd/plucky/main.go --service streamschedule --log-level debug

.PHONY: test
test:
	go test -race -count=1 ./...

.PHONY: integration
integration:
	go test -race -count=1 -tags=integration ./...

.PHONY: twirp
twirp:
	protoc --twirp_out=. --go_out=. --twirp_typescript_out=../web/src/plucky_client ./rpc/plucky.proto
	mv ./code.justin.tv/live/plucky/rpc/plucky.twirp.go ./rpc/plucky.twirp.go
	mv ./code.justin.tv/live/plucky/rpc/plucky.pb.go ./rpc/plucky.pb.go
	rm -r ./code.justin.tv

.PHONY: dev-assets
dev-assets:
	go run cmd/gen-assets/main.go \
		-inputDir ./dev-assets \
		-outputFilePath ./assets/dev-assets.go \
		-tag \!prod

.PHONY: build-ingest-log-assets
build-ingest-log-assets:
		GOOS=linux GOARCH=amd64 go build \
    		-o build/ingest-log-events/ingest-log-events \
    		-ldflags="-X main.Version=$(VERSION) -X main.GitCommit=$(GIT_COMMIT)" \
    		cmd/ingest-log-events/main.go
