dirs = ./interfaces/... ./commands/... ./services/... ./bot/... .

all: mumbledj

mumbledj: ## Default action. Builds MumbleDJ.
	@env GO15VENDOREXPERIMENT="1" go build .

.PHONY: test
test: ## Runs unit tests for MumbleDJ.
	@env GO15VENDOREXPERIMENT="1" go test $(dirs)

.PHONY: coverage
coverage: ## Runs coverage tests for MumbleDJ.
	@env GO15VENDOREXPERIMENT="1" overalls -project=github.com/matthieugrieger/mumbledj -covermode=atomic
	@mv overalls.coverprofile coverage.txt

.PHONY: clean
clean: ## Removes compiled MumbleDJ binaries.
	@rm -f mumbledj*

.PHONY: install
install: ## Copies MumbleDJ binary to /usr/local/bin for easy execution.
	@cp -f mumbledj* /usr/local/bin/mumbledj

.PHONY: dist
dist: ## Performs cross-platform builds via gox for multiple Linux platforms.
	@go get -u github.com/mitchellh/gox
	@gox -cgo -osarch="linux/amd64 linux/386"

.PHONY: bindata
bindata: ## Regenerates bindata.go with an updated configuration file.
	@go get -u github.com/jteeuwen/go-bindata/...
	@go-bindata config.yaml

.PHONY: help
help: ## Shows this helptext.
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
