REGISTRY ?= svrnty/base-distro
APKO_FLAGS ?= --log-level info

# Image variants
VARIANTS = base build dotnet-runtime dotnet-sdk flutter

.PHONY: all clean $(VARIANTS) test

all: $(VARIANTS)

# Build each variant with apko
base:
	apko build $(APKO_FLAGS) apko/base.yaml $(REGISTRY):base base.tar
	docker load < base.tar
	@echo "Built $(REGISTRY):base"

build:
	apko build $(APKO_FLAGS) apko/build.yaml $(REGISTRY):build build.tar
	docker load < build.tar
	@echo "Built $(REGISTRY):build"

dotnet-runtime:
	apko build $(APKO_FLAGS) apko/dotnet-runtime.yaml $(REGISTRY):dotnet-runtime dotnet-runtime.tar
	docker load < dotnet-runtime.tar
	@echo "Built $(REGISTRY):dotnet-runtime"

dotnet-sdk:
	apko build $(APKO_FLAGS) apko/dotnet-sdk.yaml $(REGISTRY):dotnet-sdk dotnet-sdk.tar
	docker load < dotnet-sdk.tar
	@echo "Built $(REGISTRY):dotnet-sdk"

flutter:
	apko build $(APKO_FLAGS) apko/flutter.yaml $(REGISTRY):flutter flutter.tar
	docker load < flutter.tar
	@echo "Built $(REGISTRY):flutter"

# Test all images
test: all
	@echo "=== Testing base ==="
	docker run --rm $(REGISTRY):base /bin/sh -c "cat /etc/os-release"
	@echo ""
	@echo "=== Testing build ==="
	docker run --rm $(REGISTRY):build bash -c "git --version && curl --version | head -1"
	@echo ""
	@echo "=== Testing dotnet-runtime ==="
	docker run --rm $(REGISTRY):dotnet-runtime /bin/sh -c "ls /usr/lib/libicu*"
	@echo ""
	@echo "=== Testing dotnet-sdk ==="
	docker run --rm $(REGISTRY):dotnet-sdk bash -c "git --version && ls /usr/lib/libicu*"
	@echo ""
	@echo "=== Testing flutter ==="
	docker run --rm $(REGISTRY):flutter bash -c "git --version && echo PATH=\$$PATH"
	@echo ""
	@echo "All tests passed!"

# Show image sizes
sizes: all
	@echo "=== Image Sizes ==="
	@for variant in $(VARIANTS); do \
		echo -n "$(REGISTRY):$$variant  "; \
		docker image inspect $(REGISTRY):$$variant --format '{{.Size}}' | numfmt --to=iec 2>/dev/null || \
		docker image inspect $(REGISTRY):$$variant --format '{{.Size}}'; \
	done

clean:
	rm -f *.tar
	rm -rf packages/
