ROOT_PKG ?= "git.the-red-comet.org/guy176251/go-reddit"
LIST_PKG := $(shell go list $(ROOT_PKG)/...)

# Tests
TEST_TIMEOUT ?= 20

.DEFAULT_GOAL := usage

# Print colorized log
define log
	echo "[$(@)] $(1)"
endef

.PHONY: all
all: fmt vet test test-coverage

.PHONY: usage
usage:
	@echo "make [all|fmt|vet|test|test-coverage]"

.PHONY: fmt
fmt:
	@$(call log,"Running formatter")
	@go fmt $(LIST_PKG)

.PHONY: vet
vet:
	@$(call log,"Running vet")
	@go vet -all $(LIST_PKG)

.PHONY: test
test: fmt vet
	@$(call log,"Running tests")
	@go test -v -race -short -timeout $(TEST_TIMEOUT)s $(ARGS) $(LIST_PKG)

.PHONY: test-coverage
test-coverage: fmt vet
	@$(call log,"Running tests with coverage")
	@go test -v -race -short -timeout $(TEST_TIMEOUT)s $(ARGS) -coverprofile=coverage.out $(LIST_PKG)
	@go tool cover -func=coverage.out
	@go tool cover -html=coverage.out -o coverage.html
