-include environ.inc .PHONY: help deps dev build install image release test clean export CGO_ENABLED=0 VERSION=$(shell git describe --abbrev=0 --tags 2>/dev/null || echo "$VERSION") COMMIT=$(shell git rev-parse --short HEAD || echo "$COMMIT") BRANCH=$(shell git rev-parse --abbrev-ref HEAD) BUILD=$(shell git show -s --pretty=format:%cI) GOCMD=go DESTDIR ?= $(GOBIN) ifeq ($(LOCAL), 1) IMAGE := r.mills.io/prologic/zs TAG := dev else IMAGE := prologic/zs TAG := latest endif all: help help: ## Show this help message @echo "zs - Zen Static site generator" @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[$$()% a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) preflight: ## Run preflight checks to ensure you have the right build tools @./preflight.sh deps: ## Install any required dependencies dev : DEBUG=1 dev : build ## Build debug version of zs (cli) @./zs -v cli: ## Build the zs command-line tool ifeq ($(DEBUG), 1) @echo "Building in debug mode..." @$(GOCMD) build -tags "netgo static_build" -installsuffix netgo \ -ldflags "\ -X main.Version=$(VERSION) \ -X main.Commit=$(COMMIT) \ -X main.Build=$(BUILD)" \ . else @$(GOCMD) build -tags "netgo static_build" -installsuffix netgo \ -ldflags "-w \ -X main.Version=$(VERSION) \ -X main.Commit=$(COMMIT) \ -X main.Build=$(BUILD)" \ . endif build: cli ## Build the cli install: build ## Install zs (cli) to $DESTDIR @install -D -m 755 zs $(DESTDIR)/zs ifeq ($(PUBLISH), 1) image: ## Build the Docker image @docker buildx build \ --build-arg VERSION="$(VERSION)" \ --build-arg COMMIT="$(COMMIT)" \ --build-arg BUILD="$(BUILD)" \ --platform linux/amd64,linux/arm64 --push -t $(IMAGE):$(TAG) . else image: @docker build \ --build-arg VERSION="$(VERSION)" \ --build-arg COMMIT="$(COMMIT)" \ --build-arg BUILD="$(BUILD)" \ -t $(IMAGE):$(TAG) . endif release: ## Release a new version to Gitea @./tools/release.sh fmt: ## Format sources files @$(GOCMD) fmt ./... test: ## Run test suite @CGO_ENABLED=1 $(GOCMD) test -v -cover -race ./... coverage: ## Get test coverage report @CGO_ENABLED=1 $(GOCMD) test -v -cover -race -cover -coverprofile=coverage.out ./... @$(GOCMD) tool cover -html=coverage.out clean: ## Remove untracked files @git clean -f -d -x clean-all: ## Remove untracked and Git ignored files @git clean -f -d -X