| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
- IMAGE_NAME := mtg
- APP_NAME := $(IMAGE_NAME)
-
- GOLANGCI_LINT_VERSION := v1.44.2
-
- VERSION_GO := $(shell go version)
- VERSION_DATE := $(shell date -Ru)
- VERSION_TAG := $(shell git describe --tags --always)
- COMMON_BUILD_FLAGS := -trimpath -mod=readonly -ldflags="-extldflags '-static' -s -w -X 'main.version=$(VERSION_TAG) ($(VERSION_GO)) [$(VERSION_DATE)]'"
-
- FUZZ_FLAGS := -fuzztime=120s
-
- 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 \
- $(COMMON_BUILD_FLAGS) \
- -tags netgo \
- -a \
- -o "$(APP_NAME)"
-
- vendor: go.mod go.sum
- @$(MOD_ON) go mod vendor
-
- .bin:
- @mkdir -p "$(GOBIN)" || true
-
- .PHONY: fmt
- fmt:
- @$(GOTOOL) gofumpt -w -extra "$(ROOT_DIR)"
-
- .PHONY: test
- test:
- @go test -v ./...
-
- .PHONY: citest
- citest:
- @go test -coverprofile=coverage.txt -covermode=atomic -parallel 2 -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: 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: docker
- docker:
- @docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
-
- .PHONY: doc
- doc:
- @$(GOTOOL) godoc -http 0.0.0.0:10000
-
- .PHONY: install-tools
- install-tools: install-tools-lint install-tools-godoc install-tools-gofumpt install-tools-goreleaser
-
- .PHONY: install-tools-lint
- install-tools-lint: .bin
- @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: .bin
- @$(GOTOOL) go install golang.org/x/tools/cmd/godoc@latest
-
- .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
-
- .PHONY: fuzz
- fuzz: fuzz-ClientHello fuzz-ServerGenerateHandshakeFrame fuzz-ClientHandshake fuzz-ServerReceive fuzz-ServerSend
-
- .PHONY: fuzz-ClientHello
- fuzz-ClientHello:
- @go test -fuzz=FuzzClientHello $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/faketls"
-
- .PHONY: fuzz-ServerGenerateHandshakeFrame
- fuzz-ServerGenerateHandshakeFrame:
- @go test -fuzz=FuzzServerGenerateHandshakeFrame $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"
-
- .PHONY: fuzz-ClientHandshake
- fuzz-ClientHandshake:
- @go test -fuzz=FuzzClientHandshake $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"
-
- .PHONY: fuzz-ServerReceive
- fuzz-ServerReceive:
- @go test -fuzz=FuzzServerReceive $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"
-
- .PHONY: fuzz-ServerSend
- fuzz-ServerSend:
- @go test -fuzz=FuzzServerSend $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"
|