55 lines
1.6 KiB
Makefile
55 lines
1.6 KiB
Makefile
.DEFAULT_GOAL := build
|
|
CMD := nabarr
|
|
TARGET := $(shell go env GOOS)_$(shell go env GOARCH)
|
|
DIST_PATH := dist
|
|
BUILD_PATH := ${DIST_PATH}/${CMD}_${TARGET}
|
|
GO_FILES := $(shell find . -path ./vendor -prune -or -type f -name '*.go' -print)
|
|
GIT_COMMIT := $(shell git rev-parse --short HEAD)
|
|
TIMESTAMP := $(shell date +%s)
|
|
VERSION ?= 0.0.0-dev
|
|
CGO := 0
|
|
|
|
# Deps
|
|
.PHONY: check_goreleaser
|
|
check_goreleaser:
|
|
@command -v goreleaser >/dev/null || (echo "goreleaser is required."; exit 1)
|
|
|
|
.PHONY: vendor
|
|
vendor: ## Vendor files and tidy go.mod
|
|
go mod vendor
|
|
go mod tidy
|
|
|
|
.PHONY: vendor_update
|
|
vendor_update: ## Update vendor dependencies
|
|
go get -u ./...
|
|
${MAKE} vendor
|
|
|
|
.PHONY: build
|
|
build: vendor ${BUILD_PATH}/${CMD} ## Build application
|
|
|
|
# Binary
|
|
${BUILD_PATH}/${CMD}: ${GO_FILES} go.sum
|
|
@echo "Building for ${TARGET}..." && \
|
|
mkdir -p ${BUILD_PATH} && \
|
|
CGO_ENABLED=${CGO} go build \
|
|
-mod vendor \
|
|
-trimpath \
|
|
-ldflags "-s -w -X main.Version=${VERSION} -X main.GitCommit=${GIT_COMMIT} -X main.Timestamp=${TIMESTAMP}" \
|
|
-o ${BUILD_PATH}/${CMD} \
|
|
./cmd/nabarr
|
|
|
|
.PHONY: release
|
|
release: check_goreleaser ## Generate a release, but don't publish
|
|
goreleaser --skip-validate --skip-publish --rm-dist
|
|
|
|
.PHONY: publish
|
|
publish: check_goreleaser ## Generate a release, and publish
|
|
goreleaser --rm-dist
|
|
|
|
.PHONY: snapshot
|
|
snapshot: check_goreleaser ## Generate a snapshot release
|
|
goreleaser --snapshot --skip-validate --skip-publish --rm-dist
|
|
|
|
.PHONY: help
|
|
help:
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|