# Makefile helper functions for pack # COMMANDS ?= $(filter-out %.md, $(wildcard ${ROOT_DIR}/cmd/*)) BINS ?= $(foreach cmd,${COMMANDS},$(notdir ${cmd})) ifeq (${COMMANDS},) $(error Could not determine COMMANDS, set ROOT_DIR or run in source dir) endif ifeq (${BINS},) $(error Could not determine BINS, set ROOT_DIR or run in source dir) endif .PHONY: pack.all pack.all: $(addprefix pack.handle., $(addprefix $(PLATFORM)., $(BINS))) pack.web .PHONY: pack.handle.% pack.handle.%: $(eval COMMAND := $(word 2,$(subst ., ,$*))) $(eval PLATFORM := $(word 1,$(subst ., ,$*))) $(eval OS := $(word 1,$(subst _, ,$(PLATFORM)))) $(eval ARCH := $(word 2,$(subst _, ,$(PLATFORM)))) @echo "===========> Pack binary $(COMMAND) $(VERSION) for $(OS) $(ARCH)" $(Docker) build -t $(DOCKER_REG)/$(COMMAND)-$(OS)-$(ARCH):latest -f $(ROOT_DIR)/script/dockerfile/$(COMMAND)-$(OS)-$(ARCH).dockerfile --platform linux/amd64 --build-arg commit_hash="$(VERSION)" $(ROOT_DIR) $(Docker) tag $(DOCKER_REG)/$(COMMAND)-$(OS)-$(ARCH):latest $(DOCKER_REG)/$(COMMAND)-$(OS)-$(ARCH):$(VERSION) $(Docker) push $(DOCKER_REG)/$(COMMAND)-$(OS)-$(ARCH):latest @echo "===========> Pushed: $(DOCKER_REG)/$(COMMAND)-$(OS)-$(ARCH):latest" $(Docker) push $(DOCKER_REG)/$(COMMAND)-$(OS)-$(ARCH):$(VERSION) @echo "===========> Pushed: $(DOCKER_REG)/$(COMMAND)-$(OS)-$(ARCH):$(VERSION)"