penguin/homekey-go

homekey-go

Makefile

raw ยท 1255 bytes

include build.env
-include build.env.work
export

OUT_DIR := out
BIN_DIR := bin

IMAGE_NAME ?= ghcr.io/tgckpg/homekey-go
IMAGE_TAG ?= dev

BUILDX_BUILDER ?= container-builder

GO ?= go

BUILDINFO_FILE := internal/buildinfo/buildinfo_gen.go
BUILDX_BUILDER ?= container-builder

all: test build

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

all: build
build:
	mkdir -p $(BIN_DIR)
	$(GO) build -buildvcs=false -trimpath -o $(BIN_DIR)/homekey ./cmd/homekey
test:
	$(GO) test ./...
race:
	$(GO) test -race ./...
vet:
	$(GO) vet ./...
run:
	$(GO) run -buildvcs=false ./cmd/homekey

push:
	docker buildx build \
		--platform linux/amd64,linux/arm64 \
		--build-arg APT_PROXY=$(APT_PROXY) \
		-f Dockerfile \
		-t $(IMAGE_NAME):$(IMAGE_TAG) \
		--push .

image-info:
	docker buildx imagetools inspect $(IMAGE_NAME):$(IMAGE_TAG)

clean:
	rm -rf bin

.PHONY: all build test race vet run clean push ensure-buildx