mirror of
https://github.com/mmatczuk/go-http-tunnel.git
synced 2026-05-15 06:06:03 -06:00
103 lines
2.5 KiB
Makefile
103 lines
2.5 KiB
Makefile
|
|
GO_FILES := $(shell \
|
|
find . '(' -path '*/.*' -o -path './vendor' ')' -prune \
|
|
-o -name '*.go' -print | cut -b3-)
|
|
|
|
LINT_IGNORE := "/id/\|/tunnelmock/\|/vendor/"
|
|
|
|
all: clean check test
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
@go clean -r
|
|
|
|
.PHONY: fmt
|
|
fmt:
|
|
@go fmt ./...
|
|
|
|
.PHONY: check
|
|
check: .check-fmt .check-vet .check-lint .check-ineffassign .check-static .check-misspell .check-vendor
|
|
|
|
.PHONY: .check-fmt
|
|
.check-fmt:
|
|
$(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
|
|
@cat /dev/null > $(FMT_LOG)
|
|
@gofmt -e -s -l -d $(GO_FILES) > $(FMT_LOG) || true
|
|
@[ ! -s "$(FMT_LOG)" ] || (echo "$@ failed:" | cat - $(FMT_LOG) && false)
|
|
|
|
.PHONY: .check-vet
|
|
.check-vet:
|
|
@go vet ./...
|
|
|
|
.PHONY: .check-lint
|
|
.check-lint:
|
|
$(eval LINT_LOG := $(shell mktemp -t golint.XXXXX))
|
|
@cat /dev/null > $(LINT_LOG)
|
|
@$(foreach pkg, $(GO_FILES), golint $(pkg | grep -v $LINT_IGNORE) >> $(LINT_LOG) || true;)
|
|
@[ ! -s "$(LINT_LOG)" ] || (echo "$@ failed:" | cat - $(LINT_LOG) && false)
|
|
|
|
|
|
.PHONY: .check-ineffassign
|
|
.check-ineffassign:
|
|
@ineffassign ./
|
|
|
|
.PHONY: .check-misspell
|
|
.check-misspell:
|
|
@misspell ./...
|
|
|
|
.PHONY: .check-mega
|
|
.check-static:
|
|
@staticcheck -checks ['SA1006','ST1005'] ./...
|
|
|
|
.PHONY: .check-vendor
|
|
.check-vendor:
|
|
@dep ensure -no-vendor -dry-run
|
|
|
|
.PHONY: test
|
|
test:
|
|
@echo "==> Running tests (race)..."
|
|
@go test -cover -race ./...
|
|
|
|
.PHONY: get-deps
|
|
get-deps:
|
|
@echo "==> Installing dependencies..."
|
|
@dep ensure
|
|
|
|
.PHONY: get-tools
|
|
get-tools:
|
|
@echo "==> Installing tools..."
|
|
@go get -u github.com/golang/dep/cmd/dep
|
|
@go get -u golang.org/x/lint/golint
|
|
@go get -u github.com/golang/mock/gomock
|
|
|
|
@go get -u github.com/client9/misspell/cmd/misspell
|
|
@go get -u github.com/gordonklaus/ineffassign
|
|
@go get -u github.com/mitchellh/gox
|
|
@go get -u github.com/tcnksm/ghr
|
|
@go get -u honnef.co/go/tools/cmd/staticcheck
|
|
|
|
OUTPUT_DIR = build
|
|
OS = "darwin freebsd linux windows"
|
|
ARCH = "386 amd64 arm"
|
|
OSARCH = "!darwin/386 !darwin/arm !windows/arm"
|
|
GIT_COMMIT = $(shell git describe --always)
|
|
|
|
.PHONY: release
|
|
release: check test clean build package
|
|
|
|
.PHONY: build
|
|
build:
|
|
mkdir ${OUTPUT_DIR}
|
|
CGO_ENABLED=0 GOARM=5 gox -ldflags "-w -X main.version=$(GIT_COMMIT)" \
|
|
-os=${OS} -arch=${ARCH} -osarch=${OSARCH} -output "${OUTPUT_DIR}/pkg/{{.OS}}_{{.Arch}}/{{.Dir}}" \
|
|
./cmd/tunnel ./cmd/tunneld
|
|
|
|
.PHONY: package
|
|
package:
|
|
mkdir ${OUTPUT_DIR}/dist
|
|
cd ${OUTPUT_DIR}/pkg/; for osarch in *; do (cd $$osarch; tar zcvf ../../dist/tunnel_$$osarch.tar.gz ./*); done;
|
|
cd ${OUTPUT_DIR}/dist; sha256sum * > ./SHA256SUMS
|
|
|
|
.PHONY: publish
|
|
publish:
|
|
ghr -recreate -u mmatczuk -t ${GITHUB_TOKEN} -r go-http-tunnel pre-release ${OUTPUT_DIR}/dist
|