.PHONY: help build-sindri run-sindri run-sindri-cmd list test clean

help: ## Show this help message
	@echo "Sindri Test Project - Makefile Commands"
	@echo ""
	@echo "Usage: make [target]"
	@echo ""
	@echo "Targets:"
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  %-20s %s\n", $$1, $$2}'

build-sindri: ## Build Sindri Docker image from parent directory
	@echo "Building Sindri Docker image..."
	cd .. && docker build -t sindri:latest .

run-sindri: build-sindri ## Run Sindri interactive TUI in Docker container
	@echo "Running Sindri container with test project..."
	docker run -it --rm \
		-v "$(CURDIR):/ws:rw" \
		-v /var/run/docker.sock:/var/run/docker.sock \
		-w /ws \
		-e PYTHONUNBUFFERED=1 \
		sindri:latest

run-sindri-cmd: build-sindri ## Run specific Sindri command (usage: make run-sindri-cmd CMD="sindri list")
	@if [ -z "$(CMD)" ]; then \
		echo "Error: CMD is required. Usage: make run-sindri-cmd CMD='sindri list'"; \
		exit 1; \
	fi
	@echo "Running Sindri command: $(CMD)"
	docker run -it --rm \
		-v "$(CURDIR):/ws:rw" \
		-v /var/run/docker.sock:/var/run/docker.sock \
		-w /ws \
		-e PYTHONUNBUFFERED=1 \
		sindri:latest $(CMD)

list: ## List all available Sindri commands
	$(MAKE) run-sindri-cmd CMD="sindri list"

test: ## Run tests via Sindri
	$(MAKE) run-sindri-cmd CMD="sindri run test"

setup: ## Run setup via Sindri
	$(MAKE) run-sindri-cmd CMD="sindri run setup"

compose-up: ## Start Sindri container with docker-compose
	docker-compose -f docker-compose.sindri.yml up --build

compose-run: ## Run command in Sindri container via docker-compose (usage: make compose-run CMD="sindri list")
	@if [ -z "$(CMD)" ]; then \
		echo "Error: CMD is required. Usage: make compose-run CMD='sindri list'"; \
		exit 1; \
	fi
	docker-compose -f docker-compose.sindri.yml run --rm sindri $(CMD)

clean: ## Clean up Docker containers and images
	@echo "Cleaning up..."
	docker-compose -f docker-compose.sindri.yml down 2>/dev/null || true
	@echo "Done"

