55
Makefile
Normal file
55
Makefile
Normal file
@@ -0,0 +1,55 @@
|
||||
.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}'
|
||||
Reference in New Issue
Block a user