IMAGE_REPO ?= reg.cadoles.com/cadoles
IMAGES_DIR := misc/images
IMAGES := $(foreach file, $(wildcard $(IMAGES_DIR)/*), $(basename $(notdir $(file))))

TRIVY_ARGS ?=

build-image: $(foreach image, $(IMAGES), build-image-$(image))

build-image-%:
	docker build \
		-t "${IMAGE_REPO}/$*:latest" \
		-f ${IMAGES_DIR}/$*/Dockerfile \
		.

scan-image: $(foreach image, $(IMAGES), scan-image-$(image))

scan-image-%: tools/trivy/bin/trivy
	mkdir -p .trivy/.cache
	tools/trivy/bin/trivy --cache-dir .trivy/.cache --ignorefile .trivyignore.yaml image  $(TRIVY_ARGS) $(IMAGE_REPO)/$*:latest

release-image: $(foreach image, $(IMAGES), release-image-$(image))

release-image-%: .mktools
	@[ ! -z "$(MKT_PROJECT_VERSION)" ] || ( echo "Just downloaded mktools. Please re-run command."; exit 1 )
	docker tag "${IMAGE_REPO}/$*:latest" "${IMAGE_REPO}/$*:$(MKT_PROJECT_VERSION)"
	docker tag "${IMAGE_REPO}/$*:latest" "${IMAGE_REPO}/$*:$(MKT_PROJECT_SHORT_VERSION)"
	docker push "${IMAGE_REPO}/$*:$(MKT_PROJECT_VERSION)"
	docker push "${IMAGE_REPO}/$*:$(MKT_PROJECT_SHORT_VERSION)"
	docker push "${IMAGE_REPO}/$*:latest"

tools/trivy/bin/trivy:
	mkdir -p tools/trivy/bin
	curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b ./tools/trivy/bin v0.47.0

.mktools:
	rm -rf .mktools
	curl -q https://forge.cadoles.com/Cadoles/mktools/raw/branch/master/install.sh | TASKS="version" $(SHELL)

-include .mktools/*.mk