# Go parameters
GOPATH=$(HOME)/go
GOBIN=$(HOME)/go/bin
GOCMD=go
GOGET=$(GOCMD) get
GOBUILD=$(GOCMD) build
GOCLEAN=$(GOCMD) clean
GOTEST=$(GOCMD) test
GOCOVER=$(GOCMD) tool cover
COBERTURA=$(GOBIN)/gocover-cobertura
GOLINT=$(GOBIN)/golint
GOVET=$(GOCMD) vet

# Project parameters
GONAME=kalorienmanager
GOFILE=cmd/kalorienmanager/main.go

#.PHONY: all deps clean clean-bin clean-doc

all: deps build

deps:
	GOPATH=$(GOPATH) go get -u -v github.com/jstemmer/go-junit-report
	GOPATH=$(GOPATH) go get -u -v github.com/tebeka/go2xunit
	GOPATH=$(GOPATH) go get -u -v github.com/t-yuki/gocover-cobertura
	GOPATH=$(GOPATH) go get -u -v github.com/spf13/cobra/cobra
	GOPATH=$(GOPATH) go get -u -v github.com/inconshreveable/mousetrap
	GOPATH=$(GOPATH) go get -u -v github.com/mitchellh/go-homedir
	GOPATH=$(GOPATH) go get -u -v github.com/golang/protobuf/proto
	GOPATH=$(GOPATH) go get -u -v github.com/gin-gonic/gin
	GOPATH=$(GOPATH) go get -u -v github.com/gin-gonic/gin/binding
	GOPATH=$(GOPATH) go get -u -v github.com/gin-gonic/gin/render
	GOPATH=$(GOPATH) go get -u -v github.com/gin-contrib/sse
	GOPATH=$(GOPATH) go get -u -v github.com/mattn/go-isatty
	GOPATH=$(GOPATH) go get -u -v github.com/ugorji/go/codec
	GOPATH=$(GOPATH) go get -u -v golang.org/x/crypto/bcrypt
	GOPATH=$(GOPATH) go get -u -v golang.org/x/crypto/blowfish
	GOPATH=$(GOPATH) go get -u -v gopkg.in/yaml.v2
	GOPATH=$(GOPATH) go get -u -v gopkg.in/mgo.v2
	GOPATH=$(GOPATH) go get -u -v gopkg.in/mgo.v2/bson

build: bin/$(GONAME)

bin/$(GONAME): $(GOFILE)
	@echo "Building $(GOFILE) to ./bin"
	@GOPATH=$(GOPATH) $(GOBUILD) -v -ldflags="-X main.version=$(shell git describe --always --long --dirty)" -o bin/$(GONAME) $(GOFILE)

install:
	@echo using $(GOPATH)
	GOPATH=$(GOPATH) $(GOCMD) install -v -ldflags="-X main.version=$(shell git describe --always --long --dirty)" ./...

test:
	GOPATH=$(GOPATH) $(GOTEST) -v ./...
	GOPATH=$(GOPATH) $(GOTEST) -coverprofile=cover.out ./...
	GOPATH=$(GOPATH) $(GOCOVER) -html=cover.out -o coverage.html
	GOPATH=$(GOPATH) $(COBERTURA) < cover.out > coverage.xml
	GOPATH=$(GOPATH) $(GOLINT) ./...
	GOPATH=$(GOPATH) $(GOVET) -v ./...

doc:
	cd docs; ./gradlew build

clean: clean-doc clean-bin


clean-doc:
	@echo "Cleaning Gradle build"
	cd docs; ./gradlew clean

clean-bin:
	@echo "Cleaning Go build"
	rm -rf bin/
