.PHONY: help build-upstream build-scratch build-kali build-all test clean push generate-data generate-master generate-wiki coverage-report

# Default target
help:
	@echo "File Analysis Container - Build System"
	@echo ""
	@echo "Available targets:"
	@echo "  build             Build from REMnux upstream image (recommended, default)"
	@echo "  build-scratch     Build from Ubuntu 20.04 base (full control)"
	@echo "  build-all         Build all variants"
	@echo "  test              Run tests on all builds"
	@echo "  test-remnux       Test REMnux build"
	@echo "  test-scratch      Test scratch build"
	@echo "  push              Push images to Docker Hub"
	@echo "  clean             Remove all built images"
	@echo "  shell             Interactive shell (REMnux build)"
	@echo "  shell-scratch     Interactive shell (scratch build)"
	@echo "  coverage          Check help coverage"
	@echo "  generate-data     Convert FOR610 YAML to JSON"
	@echo "  generate-master   Build master inventory and all help artifacts"
	@echo "  generate-wiki     Generate markdown wiki (473 pages)"
	@echo "  coverage-report   Generate tool coverage gap report"
	@echo ""

# Build targets
build:
	@echo "Building REMnux-based file analysis container..."
	docker build -t tabledevil/file-analysis:latest .
	docker tag tabledevil/file-analysis:latest tabledevil/file-analysis:remnux
	@echo "✓ Build complete: tabledevil/file-analysis:latest"

build-scratch:
	@echo "Building from scratch (Ubuntu 20.04 base)..."
	docker build -f Dockerfile.scratch -t tabledevil/file-analysis:latest .
	@echo "✓ Build complete: tabledevil/file-analysis:latest"


# Test targets
test:
	@echo "Testing REMnux build..."
	@docker run --rm tabledevil/file-analysis:latest bash -c "which fhelp && fhelp cheat pdfid"
	@docker run --rm tabledevil/file-analysis:latest bash -c "which pdfid.py && which capa && which visidata"
	@docker run --rm tabledevil/file-analysis:latest bash -c "zsh --version && fish --version"
	@echo "✓ REMnux build tests passed"


# Docker Hub push
push:
	@echo "Pushing images to Docker Hub..."
	docker push tabledevil/file-analysis:latest
	@echo "✓ Images pushed successfully"

# Clean up
clean:
	@echo "Removing built images..."
	-docker rmi tabledevil/file-analysis:latest
	-docker rmi tabledevil/file-analysis:remnux
	-docker rmi tabledevil/file-analysis:scratch
	@echo "✓ Cleanup complete"

# Interactive shells for testing
shell:
	docker run -it --rm -v "$$(pwd):/data" tabledevil/file-analysis:latest


# Run help coverage check
coverage:
	@echo "Checking help coverage..."
	@docker run --rm tabledevil/file-analysis:latest /usr/local/bin/check-help-coverage.sh || true

# Generate JSON from FOR610 YAML knowledge base
generate-data:
	@echo "Generating JSON from FOR610 YAML files..."
	@mkdir -p data/generated
	@for f in data/for610/*.yaml; do \
		name=$$(basename "$$f" .yaml); \
		python3 -c "import yaml,json; json.dump(yaml.safe_load(open('$$f')),open('data/generated/$$name.json','w'),indent=2)"; \
		echo "  ✓ $$name.json"; \
	done
	@echo "✓ JSON files generated in data/generated/"

# Build master inventory from all 3 sources and generate all help artifacts
generate-master: generate-data
	@echo "Building master tool inventory..."
	python3 scripts/parse-salt-states.py
	python3 scripts/scrape-remnux-docs.py
	python3 scripts/build-master-inventory.py
	python3 scripts/generate-help-artifacts.py
	python3 scripts/generate-coverage-report.py
	@echo "✓ Master inventory and all artifacts generated"

# Generate markdown wiki with [[wiki-links]] for zk browser
generate-wiki:
	python3 scripts/generate-wiki.py
	@echo "Wiki: data/generated/wiki/ (browse with: zk list --interactive)"

# Generate coverage report only (requires tools-master.yaml to exist)
coverage-report:
	python3 scripts/generate-coverage-report.py
	@echo "Report: data/generated/coverage-report.md"
