github.com/git-chglog/git-chglog@v0.15.5-0.20240126074033-6a6993d52d69/Makefile (about) 1 # Build variables 2 VERSION ?= $(shell git describe --tags --always) 3 4 # Go variables 5 GO ?= go 6 GOOS ?= $(shell $(GO) env GOOS) 7 GOARCH ?= $(shell $(GO) env GOARCH) 8 GOHOST ?= GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO) 9 10 LDFLAGS ?= "-X main.version=$(VERSION)" 11 12 # Docker variables 13 DEFAULT_TAG ?= $(shell echo "$(VERSION)" | tr -d 'v') 14 DOCKER_IMAGE := quay.io/git-chglog/git-chglog 15 DOCKER_TAG ?= $(DEFAULT_TAG) 16 17 .PHONY: all 18 all: help 19 20 ############### 21 ##@ Development 22 23 .PHONY: clean 24 clean: ## Clean workspace 25 @ $(MAKE) --no-print-directory log-$@ 26 rm -rf ./dist/ 27 rm -rf ./git-chglog 28 rm -rf $(GOPATH)/bin/git-chglog 29 rm -rf cover.out 30 31 .PHONY: test 32 test: ## Run tests 33 @ $(MAKE) --no-print-directory log-$@ 34 $(GOHOST) test -covermode atomic -coverprofile cover.out -v ./... 35 36 .PHONY: lint 37 lint: ## Run linters 38 @ $(MAKE) --no-print-directory log-$@ 39 golangci-lint run 40 41 ######### 42 ##@ Build 43 44 .PHONY: build 45 build: ## Build git-chglog 46 @ $(MAKE) --no-print-directory log-$@ 47 CGO_ENABLED=0 $(GOHOST) build -ldflags=$(LDFLAGS) -o git-chglog ./cmd/git-chglog 48 49 .PHONY: install 50 install: ## Install git-chglog 51 @ $(MAKE) --no-print-directory log-$@ 52 $(GOHOST) install ./cmd/git-chglog 53 54 .PHONY: docker 55 docker: build ## Build Docker image 56 @ $(MAKE) --no-print-directory log-$@ 57 docker build --pull --tag $(DOCKER_IMAGE):$(DOCKER_TAG) . 58 59 .PHONY: push 60 push: ## Push Docker image 61 @ $(MAKE) --no-print-directory log-$@ 62 docker push $(DOCKER_IMAGE):$(DOCKER_TAG) 63 64 ########### 65 ##@ Release 66 67 .PHONY: changelog 68 changelog: build ## Generate changelog 69 @ $(MAKE) --no-print-directory log-$@ 70 ./git-chglog --next-tag $(VERSION) -o CHANGELOG.md 71 72 .PHONY: release 73 release: changelog ## Release a new tag 74 @ $(MAKE) --no-print-directory log-$@ 75 git add CHANGELOG.md 76 git commit -m "chore: update changelog for $(VERSION)" 77 git tag $(VERSION) 78 git push origin master $(VERSION) 79 80 ######## 81 ##@ Help 82 83 .PHONY: help 84 help: ## Display this help 85 @awk \ 86 -v "col=\033[36m" -v "nocol=\033[0m" \ 87 ' \ 88 BEGIN { \ 89 FS = ":.*##" ; \ 90 printf "Usage:\n make %s<target>%s\n", col, nocol \ 91 } \ 92 /^[a-zA-Z_-]+:.*?##/ { \ 93 printf " %s%-12s%s %s\n", col, $$1, nocol, $$2 \ 94 } \ 95 /^##@/ { \ 96 printf "\n%s%s%s\n", nocol, substr($$0, 5), nocol \ 97 } \ 98 ' $(MAKEFILE_LIST) 99 100 log-%: 101 @grep -h -E '^$*:.*?## .*$$' $(MAKEFILE_LIST) | \ 102 awk \ 103 'BEGIN { \ 104 FS = ":.*?## " \ 105 }; \ 106 { \ 107 printf "\033[36m==> %s\033[0m\n", $$2 \ 108 }'