| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
- IMAGE_NAME := mtg
- APP_NAME := $(IMAGE_NAME)
-
- GOLANGCI_LINT_VERSION := v1.45.0
-
- VERSION_GO := $(shell go version)
- VERSION_DATE := $(shell date -Ru)
- VERSION_TAG := $(shell git describe --tags --always)
- COMMON_BUILD_FLAGS := -trimpath -mod=readonly -ldflags="-s -w -X 'main.version=$(VERSION_TAG) ($(VERSION_GO)) [$(VERSION_DATE)]'"
-
- GOBIN := $(ROOT_DIR)/.bin
- GOTOOL := env "GOBIN=$(GOBIN)" "PATH=$(ROOT_DIR)/.bin:$(PATH)"
-
- # -----------------------------------------------------------------------------
-
- .PHONY: all
- all: build
-
- .PHONY: build
- build:
- @go build $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
-
- $(APP_NAME): build
-
- .PHONY: static
- static:
- @env CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
-
- vendor: go.mod go.sum
- @$(MOD_ON) go mod vendor
-
- .PHONY: test
- test:
- @go test -v ./...
-
- .PHONY: citest
- citest:
- @go test -coverprofile=coverage.txt -covermode=atomic -race -v ./...
-
- .PHONY: clean
- clean:
- @git clean -xfd && \
- git reset --hard >/dev/null && \
- git submodule foreach --recursive sh -c 'git clean -xfd && git reset --hard' >/dev/null
-
- .PHONY: lint
- lint:
- @$(GOTOOL) golangci-lint run
-
- .PHONY: docker
- docker:
- @docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
-
- .PHONY: doc
- doc:
- @$(GOTOOL) godoc -http 0.0.0.0:10000
-
- .PHONY: fmt
- fmt:
- @$(GOTOOL) gofumpt -w -extra "$(ROOT_DIR)"
-
- .PHONY: release
- release:
- @$(GOTOOL) goreleaser release --snapshot --rm-dist && \
- find "$(ROOT_DIR)/dist" -type d | grep -vP "dist$$" | xargs -r rm -rf && \
- rm -f "$(ROOT_DIR)/dist/config.yaml"
-
- .PHONY: install-tools
- install-tools: install-tools-lint install-tools-godoc install-tools-gofumpt install-tools-goreleaser
-
- .PHONY: install-tools-lint
- install-tools-lint:
- @mkdir -p "$(GOBIN)" || true && \
- curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh \
- | bash -s -- -b "$(GOBIN)" "$(GOLANGCI_LINT_VERSION)"
-
- .PHONY: install-tools-godoc
- install-tools-godoc:
- @mkdir -p "$(GOBIN)" || true && \
- $(GOTOOL) go get -u golang.org/x/tools/cmd/godoc
-
- .PHONY: install-tools-gofumpt
- install-tools-gofumpt: .bin
- @$(GOTOOL) go install mvdan.cc/gofumpt@latest
-
- .PHONY: goreleaser
- install-tools-goreleaser: .bin
- @$(GOTOOL) go install github.com/goreleaser/goreleaser@latest
-
- .PHONY: update-deps
- update-deps:
- @go get -u && go mod tidy -go=1.18
|