Files
James MillsandClaude Opus 5 807e05cf0f Keep the registry hostname out of the repository
The publish workflow and the Makefile both hardcoded a private registry
hostname in a public repo. Both take it from a variable now: the
workflow reads the REGISTRY repository variable, and the Makefile a
REGISTRY make variable (environ.inc, which is already included and is
now gitignored, is the natural place for it).

The publish job is skipped when REGISTRY is unset, so a fork doesn't
fail against a registry it cannot reach, and `make image` falls back to
the Docker Hub name.

NOTE: set the REGISTRY repository variable in Gitea, or the publish job
will no longer run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TiPehVTCDGWgEBJ7H4G5VL
2026-09-01 00:27:48 +10:00

98 lines
2.6 KiB
Makefile

-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)
# Set REGISTRY (in environ.inc or the environment) to push LOCAL=1 dev images
# somewhere other than Docker Hub.
REGISTRY ?=
IMAGE_NAME := prologic/zs
ifeq ($(LOCAL), 1)
IMAGE := $(if $(REGISTRY),$(REGISTRY)/$(IMAGE_NAME),$(IMAGE_NAME))
TAG := dev
else
IMAGE := $(IMAGE_NAME)
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 --version
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