PACKAGES = `go list ./... | grep -v /vendor/`

.PHONY: build build_cron build_server cron dev lint server test update

build: build_server

build_cron:
	# Build cron app to ./build/cron/main
	go build -o build/cron cron/main.go

build_server:
	# Build web server app to ./build/server/main
	go build -o build/server server/main.go

cron:
	# Run cron app for development
	go run cron/main.go

dev: server

lint:
	# Lint project packages excluding vendor/
	gofmt -l client config internal view server/main.go cron/main.go
	goimports -w -l client config internal view server/main.go cron/main.go
	go vet server/main.go
	go vet cron/main.go
	go tool vet client config internal view
	errcheck -blank $(PACKAGES)
	aligncheck $(PACKAGES)
	structcheck $(PACKAGES)
	varcheck $(PACKAGES)

server:
	# Run web server app for development
	go run server/main.go

test:
	# Unit test project packages excluding vendor/
	go test -cover -race -v $(PACKAGES)

update:
	# Update vendor packages, stripping nested vendor directories and unused files
	glide update --strip-vendor
	glide-vc --only-code --no-tests --use-lock-file
