forked from TrueCloudLab/policy-engine
77 lines
2 KiB
Makefile
Executable file
77 lines
2 KiB
Makefile
Executable file
#!/usr/bin/make -f
|
|
|
|
TRUECLOUDLAB_LINT_VERSION ?= 0.0.6
|
|
TMP_DIR := .cache
|
|
OUTPUT_LINT_DIR ?= $(shell pwd)/bin
|
|
LINT_VERSION ?= 1.60.1
|
|
LINT_DIR = $(OUTPUT_LINT_DIR)/golangci-lint-$(LINT_VERSION)-v$(TRUECLOUDLAB_LINT_VERSION)
|
|
EASYJSON_VERSION ?= $(shell go list -f '{{.Version}}' -m github.com/mailru/easyjson)
|
|
EASYJSON_DIR ?= $(shell pwd)/bin/easyjson-$(EASYJSON_VERSION)
|
|
|
|
# Run all code formatters
|
|
fmts: fmt imports
|
|
|
|
# Reformat code
|
|
fmt:
|
|
@echo "⇒ Processing gofmt check"
|
|
@gofumpt -s -w .
|
|
|
|
# Reformat imports
|
|
imports:
|
|
@echo "⇒ Processing goimports check"
|
|
@goimports -w .
|
|
|
|
# Run Unit Test with go test
|
|
test: GOFLAGS ?= "-count=1"
|
|
test:
|
|
@echo "⇒ Running go test"
|
|
@GOFLAGS="$(GOFLAGS)" go test ./...
|
|
|
|
# Activate pre-commit hooks
|
|
pre-commit:
|
|
pre-commit install -t pre-commit -t commit-msg
|
|
|
|
# Deactivate pre-commit hooks
|
|
unpre-commit:
|
|
pre-commit uninstall -t pre-commit -t commit-msg
|
|
|
|
pre-commit-run:
|
|
@pre-commit run -a --hook-stage manual
|
|
|
|
# Install linters
|
|
lint-install:
|
|
@mkdir -p $(TMP_DIR)
|
|
@rm -rf $(TMP_DIR)/linters
|
|
@git -c advice.detachedHead=false clone --branch v$(TRUECLOUDLAB_LINT_VERSION) https://git.frostfs.info/TrueCloudLab/linters.git $(TMP_DIR)/linters
|
|
@make -C $(TMP_DIR)/linters lib CGO_ENABLED=1 OUT_DIR=$(OUTPUT_LINT_DIR)
|
|
@rm -rf $(TMP_DIR)/linters
|
|
@rmdir $(TMP_DIR) 2>/dev/null || true
|
|
@CGO_ENABLED=1 GOBIN=$(LINT_DIR) go install github.com/golangci/golangci-lint/cmd/golangci-lint@v$(LINT_VERSION)
|
|
|
|
# Run linters
|
|
lint:
|
|
@if [ ! -d "$(LINT_DIR)" ]; then \
|
|
echo "Run make lint-install"; \
|
|
exit 1; \
|
|
fi
|
|
@$(LINT_DIR)/golangci-lint run
|
|
|
|
# Install staticcheck
|
|
staticcheck-install:
|
|
@go install honnef.co/go/tools/cmd/staticcheck@latest
|
|
|
|
# Run staticcheck
|
|
staticcheck-run:
|
|
@staticcheck ./...
|
|
|
|
easyjson-install:
|
|
@rm -rf $(EASYJSON_DIR)
|
|
@mkdir -p $(EASYJSON_DIR)
|
|
@GOBIN=$(EASYJSON_DIR) go install github.com/mailru/easyjson/...@$(EASYJSON_VERSION)
|
|
|
|
generate:
|
|
@if [ ! -d "$(EASYJSON_DIR)" ]; then \
|
|
make easyjson-install; \
|
|
fi
|
|
find ./ -name "_easyjson.go" -exec rm -rf {} \;
|
|
$(EASYJSON_DIR)/easyjson ./pkg/chain/chain.go
|