# Northern Thailand Ping River Monitor - Makefile

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

# Default target
help:
	@echo "Northern Thailand Ping River Monitor - Available Commands:"
	@echo ""
	@echo "Setup:"
	@echo "  install      Install production dependencies"
	@echo "  install-dev  Install development dependencies"
	@echo ""
	@echo "Development:"
	@echo "  test         Run all tests"
	@echo "  test-cov     Run tests with coverage report"
	@echo "  lint         Run code linting"
	@echo "  format       Format code with black and isort"
	@echo "  clean        Clean up temporary files"
	@echo ""
	@echo "Running:"
	@echo "  run          Run the monitor in continuous mode"
	@echo "  run-api      Run the web API server"
	@echo "  run-test     Run a single test cycle"
	@echo ""
	@echo "Docker:"
	@echo "  docker-build Build Docker image"
	@echo "  docker-run   Run with Docker Compose"
	@echo "  docker-stop  Stop Docker services"
	@echo ""
	@echo "Documentation:"
	@echo "  docs         Generate documentation"

# Installation
install:
	pip install -r requirements.txt

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

# Testing
test:
	python test_integration.py
	python test_station_management.py

test-cov:
	pytest --cov=src --cov-report=html --cov-report=term

# Code quality
lint:
	flake8 src/ --max-line-length=100
	mypy src/

format:
	black src/ *.py
	isort src/ *.py

# Cleanup
clean:
	find . -type f -name "*.pyc" -delete
	find . -type d -name "__pycache__" -delete
	find . -type f -name "*.log" -delete
	rm -rf .pytest_cache/
	rm -rf .mypy_cache/
	rm -rf htmlcov/
	rm -rf dist/
	rm -rf build/
	rm -rf *.egg-info/

# Running
run:
	python run.py

run-api:
	python run.py --web-api

run-test:
	python run.py --test

run-status:
	python run.py --status

# Docker
docker-build:
	docker build -t ping-river-monitor .

docker-run:
	docker-compose -f docker-compose.victoriametrics.yml up -d

docker-stop:
	docker-compose -f docker-compose.victoriametrics.yml down

docker-logs:
	docker-compose -f docker-compose.victoriametrics.yml logs -f

# Documentation
docs:
	cd docs && make html

# Database management
db-migrate:
	python scripts/migrate_geolocation.py

# Monitoring
health-check:
	curl -f http://localhost:8000/health || exit 1

metrics:
	curl -s http://localhost:8000/metrics | jq .

# Development helpers
dev-setup: install-dev
	cp .env.example .env
	@echo "Development environment set up!"
	@echo "Edit .env file with your configuration"

# Production deployment
deploy-check:
	python run.py --test
	@echo "Deployment check passed!"

# Git helpers
git-setup:
	git remote add origin https://git.b4l.co.th/B4L/Northern-Thailand-Ping-River-Monitor.git
	@echo "Git remote configured!"

# Quick start
quick-start: install dev-setup run-test
	@echo "Quick start completed!"
	@echo "Run 'make run-api' to start the web interface"

# Gitea Actions
validate-workflows:
	@echo "Validating Gitea Actions workflows..."
	@for file in .gitea/workflows/*.yml; do \
		echo "Checking $$file..."; \
		python -c "import yaml; yaml.safe_load(open('$$file', encoding='utf-8'))" || exit 1; \
	done
	@echo "✅ All workflows are valid"

workflow-test:
	@echo "Testing workflow components locally..."
	make test
	make lint
	make format
	@echo "✅ Workflow test completed"