blob: c96261731e9f35b5c31116c6e0343b8fb8c0ef11 [file] [log] [blame]
GO ?= $(shell command -v go 2> /dev/null)
GO_TEST_FLAGS ?= -race
export GO111MODULE=on
MINIMUM_SUPPORTED_GO_MAJOR_VERSION = 1
MINIMUM_SUPPORTED_GO_MINOR_VERSION = 14
GO_MAJOR_VERSION = $(shell $(GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1)
GO_MINOR_VERSION = $(shell $(GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2)
GO_VERSION_VALIDATION_ERR_MSG = Golang version is not supported, please update to at least $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION).$(MINIMUM_SUPPORTED_GO_MINOR_VERSION)
BUILDER_GOOS_GOARCH="$(shell $(GO) env GOOS)_$(shell $(GO) env GOARCH)"
## Define the default target (make all)
.PHONY: default
default: all
## Checks the code style, tests, runs the code.
.PHONY: all
all: check-style test run
## Runs eslint and golangci-lint
.PHONY: check-style
check-style:
@if ! [ -x "$$(command -v golangci-lint)" ]; then \
echo "golangci-lint is not installed. Please see https://github.com/golangci/golangci-lint#install for installation instructions."; \
exit 1; \
fi; \
@echo Running golangci-lint
golangci-lint run ./...
## Runs unit tests.
.PHONY: test
test:
@echo Running unit tests
$(GO) test -v $(GO_TEST_FLAGS) ./...
## Creates a coverage report
.PHONY: coverage
coverage:
$(GO) test $(GO_TEST_FLAGS) -coverprofile=coverage.txt ./...
$(GO) tool cover -html=coverage.txt
## Clean removes all artifacts.
.PHONY: clean
clean:
rm -fr coverage.txt
rm -fr server.log
.PHONY: run
run: validate-go-version
@echo Running Knowledge Graph services
$(GO) run ./cmd/
.PHONY: validate-go-version
validate-go-version: ## Validates the installed version of go against minimum requirement.
@if [ $(GO_MAJOR_VERSION) -gt $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION) ]; then \
exit 0 ;\
elif [ $(GO_MAJOR_VERSION) -lt $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION) ]; then \
echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
exit 1; \
elif [ $(GO_MINOR_VERSION) -lt $(MINIMUM_SUPPORTED_GO_MINOR_VERSION) ] ; then \
echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
exit 1; \
fi