penguin/AstroJS

Javascript framework for my blog

mk/botanres-go.mk

raw ยท 1393 bytes

IMAGE_NAME ?= botanjs
IMAGE_TAG  ?= dev

JS_SRC_DIR ?= ./botanjs/src
GO_SRC_DIR ?= ./botanres-go
BUILDX_BUILDER ?= container-builder
BUILDINFO_FILE := internal/generated/buildinfo_gen.go

ensure-buildx:
	@if ! docker buildx inspect $(BUILDX_BUILDER) >/dev/null 2>&1; then \
		echo "Creating buildx builder $(BUILDX_BUILDER)..."; \
		docker buildx create \
			--name $(BUILDX_BUILDER) \
			--driver docker-container \
			--driver-opt network=host \
			--bootstrap --use; \
	else \
		echo "Using existing buildx builder $(BUILDX_BUILDER)"; \
		docker buildx use $(BUILDX_BUILDER); \
	fi

.buildinfo:
	@mkdir -p $(dir $(BUILDINFO_FILE))
	@printf '%s\n' \
		'package generated' \
		'' \
		'const (' \
		'	IMAGE_TAG   = "$(IMAGE_TAG)"' \
		'	Timestamp   = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \
		')' \
	> $(BUILDINFO_FILE)

gen:
	docker build \
		-f $(GO_SRC_DIR)/dockerfiles/gen.Dockerfile \
		--output type=local,dest=$(GO_SRC_DIR)/internal/generated .

build: .buildinfo ensure-buildx gen
	docker build \
		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
		--load \
		-t $(IMAGE_NAME):$(IMAGE_TAG) .

push: .buildinfo ensure-buildx gen
	docker buildx build \
		--platform linux/amd64,linux/arm64 \
		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
		-t $(IMAGE_NAME):$(IMAGE_TAG) \
		--push .

inspect:
	docker buildx imagetools inspect $(IMAGE_NAME):$(IMAGE_TAG)

.PHONY: push build .buildinfo gen