| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # ─────────────────────────────────────────────────────────────────────────────
- # PMDI — Pay My Damn Invoice | Developer Makefile
- # ─────────────────────────────────────────────────────────────────────────────
- # Usage:
- # make up — start the full Docker stack
- # make down — stop and remove containers
- # make logs — tail all container logs
- # make cron — trigger the billing scan manually
- # make migrate — run pending Alembic migrations inside the backend container
- # make autogen — generate a new migration from model changes
- # make shell-be — open a bash shell inside the backend container
- # make shell-db — open psql inside the db container
- #
- # Requires: docker compose, curl, jq
- # ─────────────────────────────────────────────────────────────────────────────
- .PHONY: up down restart logs cron migrate autogen shell-be shell-db help
- COMPOSE := docker compose
- BACKEND := pmdi_backend
- DB := pmdi_db
- API_BASE := http://localhost:8000/api
- # Load CRON_SECRET_TOKEN from .env for the manual cron trigger
- -include .env
- export
- # ── Stack management ───────────────────────────────────────────────────────────
- up:
- $(COMPOSE) up -d --build
- down:
- $(COMPOSE) down
- restart:
- $(COMPOSE) restart
- logs:
- $(COMPOSE) logs -f --tail=100
- # ── Cron manual trigger ────────────────────────────────────────────────────────
- # Sends a POST to /api/cron/run with the CRON_SECRET_TOKEN from .env
- # Pipe through jq if available, fall back to plain output.
- cron:
- @echo "▶ Triggering billing scan…"
- @curl -s -X POST $(API_BASE)/cron/run \
- -H "Authorization: Bearer $(CRON_SECRET_TOKEN)" \
- -H "Content-Type: application/json" \
- | (command -v jq > /dev/null 2>&1 && jq . || cat)
- @echo ""
- # ── Database migrations ────────────────────────────────────────────────────────
- migrate:
- @echo "▶ Running Alembic migrations…"
- $(COMPOSE) exec $(BACKEND) alembic upgrade head
- autogen:
- @echo "▶ Auto-generating migration from model changes…"
- $(COMPOSE) exec $(BACKEND) alembic revision --autogenerate -m "$(MSG)"
- # ── Shells ─────────────────────────────────────────────────────────────────────
- shell-be:
- $(COMPOSE) exec $(BACKEND) bash
- shell-db:
- $(COMPOSE) exec $(DB) psql -U $${POSTGRES_USER:-pmdi} -d $${POSTGRES_DB:-pmdi}
- # ── Help ───────────────────────────────────────────────────────────────────────
- help:
- @echo ""
- @echo " PMDI Developer Makefile"
- @echo " ──────────────────────────────────────────────────"
- @echo " make up Start stack (build if needed)"
- @echo " make down Stop and remove containers"
- @echo " make restart Restart all services"
- @echo " make logs Tail logs from all containers"
- @echo " make cron Manually trigger billing scan"
- @echo " make migrate Apply pending DB migrations"
- @echo " make autogen MSG='describe change' Generate migration"
- @echo " make shell-be Shell into backend container"
- @echo " make shell-db psql into PostgreSQL container"
- @echo ""
|