# Makefile for Chapter 18 lab pack
# Run `make help` to see available targets.

COMPOSE := docker compose

.PHONY: help up-elk down ingest sigma-shell validate clean

help:
	@echo "Chapter 18 Lab Targets:"
	@echo "  make up-elk        - Start Elasticsearch + Kibana (Lab 2)"
	@echo "  make ingest        - Load synthetic breach dataset into ES"
	@echo "  make sigma-shell   - Open an interactive sigma-tools shell (Lab 18.3)"
	@echo "  make validate      - Validate docker-compose.yml syntax"
	@echo "  make down          - Stop all containers"
	@echo "  make clean         - Stop containers, remove volumes and local images"

validate:
	$(COMPOSE) config -q && echo "Compose config: OK"

up-elk:
	$(COMPOSE) up -d elasticsearch kibana
	@echo "Waiting for Kibana to be ready ..."
	@for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do \
	  curl -s http://localhost:5601/api/status 2>/dev/null | grep -q available && echo "Kibana is ready at http://localhost:5601" && exit 0; \
	  echo "  ... still waiting ($$i/15)"; sleep 8; \
	done; echo "Kibana did not respond in time; check: docker compose ps"

ingest:
	$(COMPOSE) --profile tools run --rm elk-tools bash /lab/elk/ingest.sh

sigma-shell:
	$(COMPOSE) --profile tools run --rm sigma-tools bash

down:
	$(COMPOSE) down

clean:
	$(COMPOSE) down -v
	docker rmi ch18-elk-tools:local ch18-sigma-tools:local 2>/dev/null || true
