.PHONY:  build test check build-bin generate generate4test go-clean clean

build: build-bin

test:
	@mkdir -p coverage
	@which gotestsum || go install gotest.tools/gotestsum@latest
	@#(gotestsum --junitfile ../unit-tests-svc.xml -- -cover -coverprofile=coverage/coverage.out -race ./...)
	@(gotestsum --junitfile ../unit-tests-svc.xml -- -race ./...)

lint:
	@./scripts/check.sh

# Go build
build-bin: bin/server

generate:
	@(make -C ../idl generate)
	@(make -C ../model generate)

generate4test:
	@(./scripts/gen_mock.sh)

go-clean:
	go clean

clean: go-clean
	rm -f ./core_ctx/domain/repo/mock_repo/*
	rm -f ./core_ctx/domain/facade/mock_facade/*
	rm -f ./core_ctx/domain/service/mock_service/*
	rm -f ./core_ctx/application/mock_application/*
	rm -f ./core_ctx/application/cmd/mock_*_test.go
	rm -f ./core_ctx/application/cmd/measure/mock_*_test.go
	rm -f ./build/server/server

# Binary build
bin/server: cmd/server/main.go
	./scripts/go-build -o build/server/server cmd/server/main.go

cover:
	go test -cover -coverprofile=coverage/coverage.out -race ./...
	go tool cover -html=coverage/coverage.out
	rm -f coverage/coverage.out

coverage-after-test: gcov2lcov
	gcov2lcov -infile=coverage/coverage.out -outfile=coverage/coverage.out.lcov

#GCOV2LCOV = $(shell go env GOTOOLDIR)/gcov2lcov
gcov2lcov:
	go install github.com/jandelgado/gcov2lcov@v1.0.5
