164 lines
6.1 KiB
Makefile
164 lines
6.1 KiB
Makefile
.PHONY: help install-backend install-frontend dev-backend dev-frontend dev migrate-up migrate-down migrate-create setup clean seed
|
|
|
|
# Default target
|
|
.DEFAULT_GOAL := help
|
|
|
|
help: ## Show this help message
|
|
@echo 'Usage: make [target]'
|
|
@echo ''
|
|
@echo 'Available targets:'
|
|
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
|
|
# Installation targets
|
|
install-backend: ## Install backend dependencies
|
|
@echo "Installing backend dependencies..."
|
|
cd backend && uv sync
|
|
|
|
FRONTEND_MANAGER ?= bun
|
|
|
|
install-frontend: ## Install frontend dependencies
|
|
@echo "Installing frontend dependencies..."
|
|
cd frontend && $(FRONTEND_MANAGER) install
|
|
|
|
install: install-backend install-frontend ## Install all dependencies
|
|
|
|
# Development server targets
|
|
dev-backend: ## Run backend development server
|
|
@echo "Starting backend server..."
|
|
cd backend && uv run fastapi dev app/main.py
|
|
|
|
dev-frontend: ## Run frontend development server
|
|
@echo "Starting frontend server..."
|
|
cd frontend && $(FRONTEND_MANAGER) run dev
|
|
|
|
dev: ## Run both backend and frontend servers concurrently
|
|
@echo "Starting both backend and frontend servers..."
|
|
@make -j2 dev-backend dev-frontend
|
|
|
|
# Migration targets
|
|
migrate-create: ## Create a new migration (usage: make migrate-create NAME=migration_name)
|
|
@if [ -z "$(NAME)" ]; then \
|
|
echo "Error: NAME is required. Usage: make migrate-create NAME=migration_name"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "Creating migration: $(NAME)..."
|
|
cd backend && uv run alembic revision --autogenerate -m "$(NAME)"
|
|
|
|
migrate-up: ## Apply all pending migrations
|
|
@echo "Applying migrations..."
|
|
cd backend && uv run alembic upgrade head
|
|
|
|
migrate-down: ## Rollback last migration
|
|
@echo "Rolling back last migration..."
|
|
cd backend && uv run alembic downgrade -1
|
|
|
|
migrate-history: ## Show migration history
|
|
@echo "Migration history:"
|
|
cd backend && uv run alembic history
|
|
|
|
migrate-current: ## Show current migration version
|
|
@echo "Current migration version:"
|
|
cd backend && uv run alembic current
|
|
|
|
# Setup target
|
|
setup: install ## Install dependencies and setup project
|
|
@echo "Setup complete! Don't forget to:"
|
|
@echo " 1. Configure backend/.env.development with your DATABASE_URL"
|
|
@echo " 2. Configure frontend/.env.development with your VITE_API_URL and VITE_GOOGLE_MAPS_API_KEY"
|
|
@echo " 3. Run 'make migrate-up' to apply database migrations"
|
|
|
|
# Build targets
|
|
build-backend: ## Build backend for production
|
|
@echo "Building backend..."
|
|
cd backend && uv build
|
|
|
|
build-frontend: ## Build frontend for production
|
|
@echo "Building frontend..."
|
|
cd frontend && $(FRONTEND_MANAGER) run build
|
|
|
|
build: build-backend build-frontend ## Build both backend and frontend
|
|
|
|
# Production server targets
|
|
run-backend: ## Run backend production server
|
|
@echo "Starting backend production server..."
|
|
cd backend && uv run fastapi run app/main.py
|
|
|
|
# Utility targets
|
|
clean-backend: ## Clean backend cache and temporary files
|
|
@echo "Cleaning backend..."
|
|
cd backend && find . -type d -name __pycache__ -exec rm -r {} + 2>/dev/null || true
|
|
cd backend && find . -type f -name "*.pyc" -delete
|
|
cd backend && rm -rf .pytest_cache .mypy_cache .coverage htmlcov 2>/dev/null || true
|
|
|
|
clean-frontend: ## Clean frontend build artifacts
|
|
@echo "Cleaning frontend..."
|
|
cd frontend && rm -rf dist node_modules/.vite 2>/dev/null || true
|
|
|
|
clean: clean-backend clean-frontend ## Clean all build artifacts
|
|
|
|
# Database targets
|
|
db-init: ## Initialize database (create tables)
|
|
@echo "Initializing database..."
|
|
cd backend && uv run python -c "from app.core.database import init_db; init_db()"
|
|
|
|
db-reset: ## Reset database (drop all tables and recreate)
|
|
@echo "Resetting database..."
|
|
@echo "⚠️ This will drop all tables and data!"
|
|
@read -p "Are you sure? [y/N] " -n 1 -r; \
|
|
echo; \
|
|
if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
|
|
cd backend && uv run python -c "from sqlalchemy import text; from app.core.database import engine; from sqlmodel import Session; session = Session(engine); session.exec(text('DROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public;')); session.commit(); session.close()"; \
|
|
echo "Database reset complete. Run 'make migrate-up' to recreate tables."; \
|
|
else \
|
|
echo "Cancelled."; \
|
|
fi
|
|
|
|
db-reset-alembic: ## Reset alembic version table (use when rebuilding migrations)
|
|
@echo "Resetting alembic version table..."
|
|
cd backend && uv run python -c "from sqlalchemy import text; from app.core.database import engine; from sqlmodel import Session; session = Session(engine); session.exec(text('DROP TABLE IF EXISTS alembic_version;')); session.commit(); session.close()"
|
|
@echo "Alembic version table reset. You can now create a new migration."
|
|
|
|
seed: ## Seed database with initial data
|
|
@echo "Seeding database..."
|
|
cd backend && uv run python -m app.core.seed
|
|
|
|
import-coordinates: ## Import bus stop coordinates from Supabase (usage: make import-coordinates ROUTE="Boquete>David" or make import-coordinates ALL=true)
|
|
@echo "Importing coordinates from Supabase..."
|
|
@if [ "$(ALL)" = "true" ]; then \
|
|
cd backend && uv run python -m app.core.import_supabase_coordinates --all; \
|
|
else \
|
|
cd backend && uv run python -m app.core.import_supabase_coordinates "$(ROUTE)"; \
|
|
fi
|
|
##Probar los lint
|
|
# Format and lint targets
|
|
format-backend: ## Format backend code
|
|
@echo "Formatting backend code..."
|
|
cd backend && uv run ruff format .
|
|
|
|
lint-backend: install-backend ## Lint backend code
|
|
@echo "Linting backend code..."
|
|
cd backend && uv run ruff check . --fix
|
|
|
|
format-frontend: ## Format frontend code
|
|
@echo "Formatting frontend code..."
|
|
cd frontend && $(FRONTEND_MANAGER) run format || echo "No format script found"
|
|
|
|
lint-frontend: install-frontend ## Lint frontend code
|
|
@echo "Linting frontend code..."
|
|
cd frontend && $(FRONTEND_MANAGER) run build
|
|
# cd frontend && $(FRONTEND_MANAGER) run lint || echo "No lint script found"
|
|
|
|
lint: lint-backend lint-frontend ## Lint all code
|
|
|
|
# Test targets
|
|
test-backend: ## Run backend tests
|
|
@echo "Running backend tests..."
|
|
cd backend && uv run pytest || echo "No tests found"
|
|
|
|
test-frontend: ## Run frontend tests
|
|
@echo "Running frontend tests..."
|
|
cd frontend && $(FRONTEND_MANAGER) run test || echo "No tests found"
|
|
|
|
test: test-backend test-frontend ## Run all tests
|
|
|