SHELL := /bin/bash

.PHONY: envcheck test run upgrade mocks swagger

envcheck:
	# Verify go version and network connection
	@ expr $$(go version | cut -f3 -d " " | cut -c3-) \>= 1.7 >/dev/null || \
		(echo "$$(tput bold)[ERROR] Please use go1.7 or greater $$(tput sgr0)" && false)

test:
	# Unit tests with coverage analysis
	go test -cover -race ./...

run:
	# Run recommendations server
	go run ./main.go

upgrade: envcheck
	# Upgrade glide dependencies and remove tests
	glide update --strip-vendor
	glide-vc --use-lock-file --only-code --no-tests

mocks:
	# Generate go mocks for logic, backend, kinesis, and needed clients
	go generate ./...

swagger:
	# Generate swagger documentation for API endpoints
	swagger generate spec -m -o ./swagger/swagger.json
	./scripts/clean_swagger.sh
