|
| 1 | +.PHONY: db wait-db ensure-db rabbit web-stop migrate dev help |
| 2 | + |
| 3 | +help: ## List available targets |
| 4 | + @grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) \ |
| 5 | + | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-10s\033[0m %s\n", $$1, $$2}' |
| 6 | + |
| 7 | +db: ## Remove old standalone postgres, then start Compose db |
| 8 | + @echo "🛑 Removing old 'postgres' container if it exists…" |
| 9 | + @docker ps --filter "name=postgres$$" -q | xargs -r docker rm -f >/dev/null 2>&1 || true |
| 10 | + @echo "🔍 Starting 'db' service via Compose…" |
| 11 | + @docker compose up -d db |
| 12 | + |
| 13 | +wait-db: ## Wait until Postgres accepts connections |
| 14 | + @echo "⏳ Waiting for Postgres to be ready…" |
| 15 | + @until docker compose exec db pg_isready -U postgres >/dev/null 2>&1; do \ |
| 16 | + sleep 1; \ |
| 17 | + done |
| 18 | + @echo "✅ Postgres is accepting connections." |
| 19 | + |
| 20 | +ensure-db: ## Create taskflow DB if it doesn’t already exist |
| 21 | + @echo "🔧 Ensuring database 'taskflow' exists…" |
| 22 | + @docker compose exec db \ |
| 23 | + psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname='taskflow';" \ |
| 24 | + | grep -q 1 \ |
| 25 | + && echo "✅ 'taskflow' already exists." \ |
| 26 | + || (echo "🚀 Creating 'taskflow'…" \ |
| 27 | + && docker compose exec db psql -U postgres -c "CREATE DATABASE taskflow;") |
| 28 | + @echo "✅ Database is ready." |
| 29 | + |
| 30 | +rabbit: ## Start RabbitMQ service |
| 31 | + @echo "🔍 Starting 'rabbitmq' service…" |
| 32 | + @docker compose up -d rabbitmq |
| 33 | + |
| 34 | +web-stop: ## Stop & remove the web container |
| 35 | + @echo "🛑 Stopping & removing 'web'…" |
| 36 | + @docker compose stop web >/dev/null 2>&1 || true |
| 37 | + @docker compose rm -f web >/dev/null 2>&1 || true |
| 38 | + |
| 39 | +migrate: ## Run Django migrations |
| 40 | + @echo "🔄 Applying Django migrations…" |
| 41 | + @python3 manage.py migrate |
| 42 | + |
| 43 | + |
| 44 | +# ------------------------ RUN EVERYTHING ------------------------ |
| 45 | + |
| 46 | +dev: db wait-db ensure-db rabbit web-stop migrate ## Bootstrap everything |
| 47 | + @echo "✅ Ready for dev! Run: python manage.py runserver" |
0 commit comments