# Makefile for Flask Balotario Application
# Provides convenient commands for development and deployment

.PHONY: help install install-dev install-test clean test lint format run docker-build docker-run

# Default target
help:
	@echo "Available commands:"
	@echo "  install      - Install production dependencies"
	@echo "  install-dev  - Install development dependencies"
	@echo "  clean        - Clean up cache and temporary files"
	@echo "  test         - Run tests with coverage"
	@echo "  lint         - Run linting checks"
	@echo "  format       - Format code with black and isort"
	@echo "  security     - Run security checks"
	@echo "  run          - Run development server"
	@echo "  run-prod     - Run production server with gunicorn"
	@echo "  docker-build - Build Docker image"
	@echo "  docker-run   - Run Docker container"
	@echo "  download-images - Download all images locally"
	@echo "  verify-images   - Verify all images are available"

# Installation targets
install:
	pip install -r requirements.txt

install-dev:
	pip install -r requirements-dev.txt

# Development targets
clean:
	find . -type f -name "*.pyc" -delete
	find . -type d -name "__pycache__" -delete
	find . -type d -name "*.egg-info" -exec rm -rf {} +
	rm -rf .pytest_cache
	rm -rf .coverage
	rm -rf htmlcov/

test:
	pytest --cov=. --cov-report=html --cov-report=term-missing

lint:
	flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
	flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

format:
	black .
	isort .

security:
	bandit -r . -x tests/
	safety check

# Server targets
run:
	python app.py

run-prod:
	gunicorn --bind 0.0.0.0:5000 --workers 4 app:app

# Docker targets
docker-build:
	docker build -t driving-academy .

docker-run:
	docker run -p 5000:5000 driving-academy

# Image management
download-images:
	python scripts/download_images.py

verify-images:
	python scripts/verify_images.py

# Development setup (complete environment)
setup-dev: install-dev download-images
	@echo "Development environment ready!"
	@echo "Run 'make run' to start the development server"

# Production setup
setup-prod: install
	@echo "Production environment ready!"
	@echo "Run 'make run-prod' to start the production server"
