Makefile 861 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. PKG := github.com/goccy/go-json
  2. BIN_DIR := $(CURDIR)/bin
  3. PKGS := $(shell go list ./... | grep -v internal/cmd|grep -v test)
  4. COVER_PKGS := $(foreach pkg,$(PKGS),$(subst $(PKG),.,$(pkg)))
  5. COMMA := ,
  6. EMPTY :=
  7. SPACE := $(EMPTY) $(EMPTY)
  8. COVERPKG_OPT := $(subst $(SPACE),$(COMMA),$(COVER_PKGS))
  9. $(BIN_DIR):
  10. @mkdir -p $(BIN_DIR)
  11. .PHONY: cover
  12. cover:
  13. go test -coverpkg=$(COVERPKG_OPT) -coverprofile=cover.out ./...
  14. .PHONY: cover-html
  15. cover-html: cover
  16. go tool cover -html=cover.out
  17. .PHONY: lint
  18. lint: golangci-lint
  19. golangci-lint run
  20. golangci-lint: | $(BIN_DIR)
  21. @{ \
  22. set -e; \
  23. GOLANGCI_LINT_TMP_DIR=$$(mktemp -d); \
  24. cd $$GOLANGCI_LINT_TMP_DIR; \
  25. go mod init tmp; \
  26. GOBIN=$(BIN_DIR) go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.36.0; \
  27. rm -rf $$GOLANGCI_LINT_TMP_DIR; \
  28. }
  29. .PHONY: generate
  30. generate:
  31. go generate ./internal/...