105 lines
4.5 KiB
Makefile
105 lines
4.5 KiB
Makefile
DEVP_LINT_GOGC := $(if $(DEVP_LINT_GOGC),$(DEVP_LINT_GOGC),100)
|
|
DEVP_LINT_ARGS := $(if $(DEVP_LINT_ARGS),$(DEVP_LINT_ARGS),)
|
|
|
|
.PHONY: devp/lint-go
|
|
devp/lint-go: ${DEVP_GOLANG_CI_LINT_EXE}
|
|
@# Run linter with local config
|
|
$(Q) GOGC=${DEVP_LINT_GOGC} ${DEVP_GOLANG_CI_LINT_EXE} -v run ./...
|
|
|
|
.PHONY: devp/lint-go-fix
|
|
devp/lint-go-fix: ${DEVP_GOLANG_CI_LINT_EXE}
|
|
@# Run linter with local config and --fix flag
|
|
$(Q) GOGC=${DEVP_LINT_GOGC} ${DEVP_GOLANG_CI_LINT_EXE} -v run ./... --fix
|
|
|
|
.PHONY: devp/lint-go/vscode-enable
|
|
devp/lint-go/vscode-enable: ${DEVP_DEVPTOOL_EXE} ${DEVP_LINT_EXE}
|
|
@# Enable platform linting in VS Code
|
|
$(Q) ${DEVP_DEVPTOOL_EXE} golang configure-ide vscode linter --devplint-path=${DEVP_LINT_EXE} --golangci-lint-path=${DEVP_GOLANG_CI_LINT_EXE}
|
|
|
|
.PHONY: devp/lint-go/vscode-disable
|
|
devp/lint-go/vscode-disable: ${DEVP_DEVPTOOL_EXE} ${DEVP_GOLANG_CI_LINT_EXE} ${DEVP_LINT_EXE}
|
|
@# Disable platform linting in VS Code
|
|
$(Q) ${DEVP_DEVPTOOL_EXE} golang configure-ide vscode linter --devplint-path=${DEVP_LINT_EXE} --golangci-lint-path=${DEVP_GOLANG_CI_LINT_EXE} --enable=false
|
|
|
|
.PHONY: devp/lint-go/goland-enable
|
|
devp/lint-go/goland-enable: ${DEVP_DEVPTOOL_EXE} ${DEVP_GOLANG_CI_LINT_EXE} ${DEVP_LINT_EXE}
|
|
@# Enable platform linting in Goland
|
|
$(Q) ${DEVP_DEVPTOOL_EXE} golang configure-ide goland linter --devplint-path=${DEVP_LINT_EXE} --golangci-lint-path=${DEVP_GOLANG_CI_LINT_EXE}
|
|
|
|
.PHONY: devp/lint-go/goland-disable
|
|
devp/lint-go/goland-disable: ${DEVP_DEVPTOOL_EXE} ${DEVP_GOLANG_CI_LINT_EXE} ${DEVP_LINT_EXE}
|
|
@# Disable platform linting in Goland
|
|
$(Q) ${DEVP_DEVPTOOL_EXE} golang configure-ide goland linter --devplint-path=${DEVP_LINT_EXE} --golangci-lint-path=${DEVP_GOLANG_CI_LINT_EXE} --enable=false
|
|
|
|
DEVP_LINT_SCRIPTS_ROOT := $(if $(DEVP_LINT_SCRIPTS_ROOT),$(DEVP_LINT_SCRIPTS_ROOT),.)
|
|
DEVP_LINT_DEFAULT_PATH = ${DEVP_SCRIPTS}/lint/golangci.yml
|
|
DEVP_LINT_FIX_PATH := ${DEVP_LINT_SCRIPTS_ROOT}/scripts/golangci-fix.yml
|
|
DEVP_LINT_MERGED_PATH := ${DEVP_LINT_SCRIPTS_ROOT}/scripts/golangci-merged.yml
|
|
|
|
# If 'scripts/golangci-fix.yml' file exists, we need to merge it with the default config
|
|
# Otherwise we just use the default config directly
|
|
ifeq ($(wildcard ${DEVP_LINT_FIX_PATH}),)
|
|
DEVP_LINT_CONFIG_PATH = ${DEVP_LINT_DEFAULT_PATH}
|
|
DEVP_LINT_FIX = 0
|
|
else
|
|
DEVP_LINT_CONFIG_PATH = ${DEVP_LINT_MERGED_PATH}
|
|
DEVP_LINT_FIX = 1
|
|
endif
|
|
|
|
DEVP_GOLANG_CI_LINT_CMD := ${DEVP_GOLANG_CI_LINT_EXE} -v --config ${DEVP_LINT_CONFIG_PATH} ${DEVP_LINT_ARGS} run
|
|
|
|
.PHONY: devp/lint-clean-config
|
|
devp/lint-clean-config:
|
|
@# Remove merged config if 'scripts/golangci-fix.yml' doesn't exist
|
|
ifeq ($(DEVP_LINT_FIX), 0)
|
|
$(Q) rm -f ${DEVP_LINT_MERGED_PATH}
|
|
endif
|
|
|
|
${DEVP_LINT_MERGED_PATH}: ${DEVP_YQ_EXE} ${DEVP_LINT_DEFAULT_PATH} $(wildcard ${DEVP_LINT_FIX_PATH})
|
|
@# Config file merged from the default platform config and 'scripts/golangci-fix.yml'
|
|
$(Q) echo "Generating merged config into '${@}'"
|
|
$(Q) ${DEVP_SCRIPTS}/lint/merge-lint-config.sh $@ $^
|
|
|
|
.PHONY: devp/lint-config-verify
|
|
devp/lint-config-verify:
|
|
@# Verify linting config
|
|
$(Q) echo "Verifying linting config"
|
|
$(Q) ${DEVP_GOLANG_CI_LINT_EXE} config verify --config ${DEVP_LINT_CONFIG_PATH}
|
|
|
|
.PHONY: devp/lint-deps
|
|
devp/lint-deps: devp/lint-clean-config ${DEVP_GOLANG_CI_LINT_EXE} ${DEVP_LINT_CONFIG_PATH}
|
|
@# Prepare linter config, install golangci-lint if needed and call `devp/lint-config-verify` if `golangci-fix.yml`exists
|
|
ifeq ($(DEVP_LINT_FIX), 1)
|
|
$(Q) $(MAKE) devp/lint-config-verify
|
|
endif
|
|
|
|
.PHONY: devp/lint-go-default
|
|
devp/lint-go-default: devp/lint-deps
|
|
@# Run linter with the platform config
|
|
$(Q) GOGC=${DEVP_LINT_GOGC} ${DEVP_GOLANG_CI_LINT_CMD} ./...
|
|
|
|
.PHONY: devp/lint-go-default-report
|
|
devp/lint-go-default-report: devp/lint-deps
|
|
@# Generate linting json report for the platform linting config
|
|
$(Q) GOGC=${DEVP_LINT_GOGC} ${DEVP_GOLANG_CI_LINT_CMD} --output.json.path=devp_lint_report.json
|
|
|
|
.PHONY: devp/lint-go-default-fix
|
|
devp/lint-go-default-fix: devp/lint-deps
|
|
@# Run linter with the platform config and --fix flag
|
|
$(Q) GOGC=${DEVP_LINT_GOGC} ${DEVP_GOLANG_CI_LINT_CMD} ./... --fix
|
|
|
|
.PHONY: devp/lint-cache-clean
|
|
devp/lint-cache-clean: ${DEVP_GOLANG_CI_LINT_EXE}
|
|
@# Clean linter cache
|
|
$(Q) ${DEVP_GOLANG_CI_LINT_EXE} cache clean
|
|
|
|
.PHONY: devp/lint-cache-status
|
|
devp/lint-cache-status: ${DEVP_GOLANG_CI_LINT_EXE}
|
|
@# Show cache directory path and size
|
|
$(Q) ${DEVP_GOLANG_CI_LINT_EXE} cache status
|
|
|
|
.PHONY: .devp/lint-go-nolint-gen
|
|
.devp/lint-go-nolint-gen: ${DEVP_DEVPTOOL_EXE}
|
|
@# [For Devp team. Do not call directly.] Generate 'nolint' directives for all linting issues.
|
|
$(Q) ${DEVP_DEVPTOOL_EXE} golang lint nolint-gen
|