Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
  2. IMAGE_NAME := mtg
  3. APP_NAME := $(IMAGE_NAME)
  4. GOLANGCI_LINT_VERSION := v1.45.0
  5. VERSION_GO := $(shell go version)
  6. VERSION_DATE := $(shell date -Ru)
  7. VERSION_TAG := $(shell git describe --tags --always)
  8. COMMON_BUILD_FLAGS := -trimpath -mod=readonly -ldflags="-s -w -X 'main.version=$(VERSION_TAG) ($(VERSION_GO)) [$(VERSION_DATE)]'"
  9. GOBIN := $(ROOT_DIR)/.bin
  10. GOTOOL := env "GOBIN=$(GOBIN)" "PATH=$(ROOT_DIR)/.bin:$(PATH)"
  11. # -----------------------------------------------------------------------------
  12. .PHONY: all
  13. all: build
  14. .PHONY: build
  15. build:
  16. @go build $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
  17. $(APP_NAME): build
  18. .PHONY: static
  19. static:
  20. @env CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
  21. vendor: go.mod go.sum
  22. @$(MOD_ON) go mod vendor
  23. .PHONY: test
  24. test:
  25. @go test -v ./...
  26. .PHONY: citest
  27. citest:
  28. @go test -coverprofile=coverage.txt -covermode=atomic -race -v ./...
  29. .PHONY: clean
  30. clean:
  31. @git clean -xfd && \
  32. git reset --hard >/dev/null && \
  33. git submodule foreach --recursive sh -c 'git clean -xfd && git reset --hard' >/dev/null
  34. .PHONY: lint
  35. lint:
  36. @$(GOTOOL) golangci-lint run
  37. .PHONY: docker
  38. docker:
  39. @docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
  40. .PHONY: doc
  41. doc:
  42. @$(GOTOOL) godoc -http 0.0.0.0:10000
  43. .PHONY: fmt
  44. fmt:
  45. @$(GOTOOL) gofumpt -w -extra "$(ROOT_DIR)"
  46. .PHONY: release
  47. release:
  48. @$(GOTOOL) goreleaser release --snapshot --rm-dist && \
  49. find "$(ROOT_DIR)/dist" -type d | grep -vP "dist$$" | xargs -r rm -rf && \
  50. rm -f "$(ROOT_DIR)/dist/config.yaml"
  51. .PHONY: install-tools
  52. install-tools: install-tools-lint install-tools-godoc install-tools-gofumpt install-tools-goreleaser
  53. .PHONY: install-tools-lint
  54. install-tools-lint:
  55. @mkdir -p "$(GOBIN)" || true && \
  56. curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh \
  57. | bash -s -- -b "$(GOBIN)" "$(GOLANGCI_LINT_VERSION)"
  58. .PHONY: install-tools-godoc
  59. install-tools-godoc:
  60. @mkdir -p "$(GOBIN)" || true && \
  61. $(GOTOOL) go get -u golang.org/x/tools/cmd/godoc
  62. .PHONY: install-tools-gofumpt
  63. install-tools-gofumpt: .bin
  64. @$(GOTOOL) go install mvdan.cc/gofumpt@latest
  65. .PHONY: goreleaser
  66. install-tools-goreleaser: .bin
  67. @$(GOTOOL) go install github.com/goreleaser/goreleaser@latest
  68. .PHONY: update-deps
  69. update-deps:
  70. @go get -u && go mod tidy -go=1.18