VIRTIO_VERSION := 0.1.266
VIRTIO_ISO_URL := https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-$(VIRTIO_VERSION)-1/virtio-win-$(VIRTIO_VERSION).iso
VIRTIO_ISO     := virtio-win.iso
VAR_FILE       := variables.pkrvars.hcl

.PHONY: all build init validate clean distclean help

all: build

## Install Packer QEMU plugin
init:
	packer init .

## Download VirtIO drivers ISO (~500 MB, one-time)
$(VIRTIO_ISO):
	curl -L --progress-bar -o $(VIRTIO_ISO) $(VIRTIO_ISO_URL)

virtio-iso: $(VIRTIO_ISO)

## Validate the Packer template (does not run the build)
validate: $(VIRTIO_ISO)
	SWTPM_SOCK=/tmp/dummy-validate \
	  packer validate -var "swtpm_sock=/tmp/dummy" -var-file=$(VAR_FILE) .

## Build the VM image (starts swtpm, runs Packer, cleans up)
build: init $(VIRTIO_ISO)
	@test -f $(VAR_FILE) || { \
	  echo "ERROR: $(VAR_FILE) not found."; \
	  echo "       cp variables.pkrvars.hcl.example $(VAR_FILE) and fill it in."; \
	  exit 1; }
	bash build.sh $(VAR_FILE)

## Remove build output (keeps downloaded ISOs)
clean:
	rm -rf output/

## Remove build output and downloaded ISOs
distclean: clean
	rm -f $(VIRTIO_ISO)

help:
	@echo "Targets:"
	@echo "  build      Build the VM image (default)"
	@echo "  validate   Validate Packer config without building"
	@echo "  init       Install Packer plugins"
	@echo "  virtio-iso Download the VirtIO drivers ISO"
	@echo "  clean      Remove build output"
	@echo "  distclean  Remove build output + downloaded ISOs"
