|
| 1 | +.PHONY: clean test bins lint tools |
| 2 | +PROJECT_ROOT = github.com/temporalio/tcld |
| 3 | + |
| 4 | +# default target |
| 5 | +default: clean test bins |
| 6 | + |
| 7 | +TAG_COMMIT := $(shell git rev-list --abbrev-commit --tags --max-count=1) |
| 8 | +TAG := $(shell git describe --abbrev=0 --tags ${TAG_COMMIT} 2>/dev/null || true) |
| 9 | +COMMIT := $(shell git rev-parse --short HEAD) |
| 10 | +DATE := $(shell git log -1 --format=%cd --date=format:"%Y%m%d") |
| 11 | +VERSION := $(TAG:v%=%) |
| 12 | +APPPKG := $(PROJECT_ROOT)/app |
| 13 | +LINKER_FLAGS := -X $(APPPKG).BuildDate=$(DATE) -X $(APPPKG).Commit=$(COMMIT) -X $(APPPKG).Version=$(VERSION) |
| 14 | + |
| 15 | + |
| 16 | +ALL_SRC := $(shell find . -name "*.go") |
| 17 | +TEST_DIRS := $(sort $(dir $(filter %_test.go,$(ALL_SRC)))) |
| 18 | +TEST_ARG ?= -race -timeout=5m -cover -count=1 |
| 19 | + |
| 20 | +tcld: |
| 21 | + @go build -ldflags "$(LINKER_FLAGS)" -o tcld ./cmd/tcld/*.go |
| 22 | + |
| 23 | +bins: tcld |
| 24 | + |
| 25 | +test: |
| 26 | + @$(foreach TEST_DIR,$(TEST_DIRS),\ |
| 27 | + go test $(TEST_ARG) $(TEST_DIR) &&) echo passed |
| 28 | + |
| 29 | +clean: |
| 30 | + @rm -rf ./tcld |
| 31 | + |
| 32 | +define build |
| 33 | + @echo "building release for $(1) $(2) $(3)..." |
| 34 | + @mkdir -p releases |
| 35 | + @GOOS=$(2) GOARCH=$(3) go build -ldflags "-w $(LINKER_FLAGS)" -o releases/$(1)_$(2)_$(3)$(4) ./cmd/tcld/*.go |
| 36 | + @tar -cvzf releases/$(1)_$(2)_$(3).tar.gz releases/$(1)_$(2)_$(3)$(4) &>/dev/null |
| 37 | +endef |
| 38 | + |
| 39 | +release: |
| 40 | + @rm -rf releases && mkdir -p releases |
| 41 | + $(call build,tcld,linux,amd64) |
| 42 | + $(call build,tcld,darwin,amd64,) |
| 43 | + $(call build,tcld,darwin,arm64,) |
| 44 | + $(call build,tcld,windows,amd64,.exe) |
| 45 | + |
| 46 | +tools: |
| 47 | + @go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.45.2 |
| 48 | + @GO111MODULE=off go get -u github.com/golang/mock/mockgen |
| 49 | + |
| 50 | +lint: |
| 51 | + golangci-lint run |
| 52 | + |
| 53 | +mocks: |
| 54 | + @mockgen -source services/loginservice.go -destination services/loginservicemock.go -package services |
0 commit comments