velxio/Makefile

44 lines
1.6 KiB
Makefile

.PHONY: help dev dev-backend dev-frontend install clean
.DEFAULT_GOAL := help
help: ## Show available commands
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-15s %s\n", $$1, $$2}'
dev: ## Start backend and frontend (requires tmux)
@if command -v tmux >/dev/null 2>&1; then \
tmux new-session -d -s velxio 'make dev-backend' \; split-window -h 'make dev-frontend' \; attach; \
else \
echo "Install tmux or run 'make dev-backend' and 'make dev-frontend' in separate terminals"; \
fi
dev-backend: ## Start backend (port 8001)
@cd backend && . venv/bin/activate && uvicorn app.main:app --reload --host 0.0.0.0 --port 8001
dev-frontend: ## Start frontend (port 5173)
@cd frontend && npm run dev
install: ## Install dependencies
@echo "Installing root dependencies (tsx, typescript for build scripts)..."
@npm install
@echo "Cloning wokwi-libs (shallow)..."
@for lib in avr8js rp2040js wokwi-elements; do \
if [ ! -d "wokwi-libs/$$lib/.git" ]; then \
rm -rf "wokwi-libs/$$lib"; \
git clone --depth=1 "https://github.com/wokwi/$$lib.git" "wokwi-libs/$$lib"; \
fi; \
done
@echo "Installing backend dependencies..."
@cd backend && python3 -m venv venv && . venv/bin/activate && pip install -r requirements.txt
@echo "Installing frontend dependencies..."
@cd frontend && npm install
@echo "Building wokwi-libs..."
@for lib in avr8js rp2040js wokwi-elements; do \
echo "Building $$lib..."; \
cd "wokwi-libs/$$lib" && npm install && npm run build && cd ../..; \
done
@echo "✓ All dependencies installed"
clean: ## Remove venv and node_modules
@rm -rf backend/venv frontend/node_modules node_modules