110 lines
3.3 KiB
Makefile
110 lines
3.3 KiB
Makefile
# Archon Makefile - Simple, Secure, Cross-Platform
|
|
SHELL := /bin/bash
|
|
.SHELLFLAGS := -ec
|
|
|
|
# Docker compose command - prefer newer 'docker compose' plugin over standalone 'docker-compose'
|
|
COMPOSE ?= $(shell docker compose version >/dev/null 2>&1 && echo "docker compose" || echo "docker-compose")
|
|
|
|
.PHONY: help dev dev-docker stop test test-fe test-be lint lint-fe lint-be clean install check
|
|
|
|
help:
|
|
@echo "Archon Development Commands"
|
|
@echo "==========================="
|
|
@echo " make dev - Backend in Docker, frontend local (recommended)"
|
|
@echo " make dev-docker - Everything in Docker"
|
|
@echo " make stop - Stop all services"
|
|
@echo " make test - Run all tests"
|
|
@echo " make test-fe - Run frontend tests only"
|
|
@echo " make test-be - Run backend tests only"
|
|
@echo " make lint - Run all linters"
|
|
@echo " make lint-fe - Run frontend linter only"
|
|
@echo " make lint-be - Run backend linter only"
|
|
@echo " make clean - Remove containers and volumes"
|
|
@echo " make install - Install dependencies"
|
|
@echo " make check - Check environment setup"
|
|
|
|
# Install dependencies
|
|
install:
|
|
@echo "Installing dependencies..."
|
|
@cd archon-ui-main && npm install
|
|
@cd python && uv sync --group all --group dev
|
|
@echo "✓ Dependencies installed"
|
|
|
|
# Check environment
|
|
check:
|
|
@echo "Checking environment..."
|
|
@node -v >/dev/null 2>&1 || { echo "✗ Node.js not found (require Node 18+)."; exit 1; }
|
|
@node check-env.js
|
|
@echo "Checking Docker..."
|
|
@docker --version > /dev/null 2>&1 || { echo "✗ Docker not found"; exit 1; }
|
|
@$(COMPOSE) version > /dev/null 2>&1 || { echo "✗ Docker Compose not found"; exit 1; }
|
|
@echo "✓ Environment OK"
|
|
|
|
|
|
# Hybrid development (recommended)
|
|
dev: check
|
|
@echo "Starting hybrid development..."
|
|
@echo "Backend: Docker | Frontend: Local with hot reload"
|
|
@$(COMPOSE) --profile backend up -d --build
|
|
@set -a; [ -f .env ] && . ./.env; set +a; \
|
|
echo "Backend running at http://$${HOST:-localhost}:$${ARCHON_SERVER_PORT:-8181}"
|
|
@echo "Starting frontend..."
|
|
@cd archon-ui-main && \
|
|
VITE_ARCHON_SERVER_PORT=$${ARCHON_SERVER_PORT:-8181} \
|
|
VITE_ARCHON_SERVER_HOST=$${HOST:-} \
|
|
npm run dev
|
|
|
|
# Full Docker development
|
|
dev-docker: check
|
|
@echo "Starting full Docker environment..."
|
|
@$(COMPOSE) --profile full up -d --build
|
|
@echo "✓ All services running"
|
|
@echo "Frontend: http://localhost:3737"
|
|
@echo "API: http://localhost:8181"
|
|
|
|
# Stop all services
|
|
stop:
|
|
@echo "Stopping all services..."
|
|
@$(COMPOSE) --profile backend --profile frontend --profile full down
|
|
@echo "✓ Services stopped"
|
|
|
|
# Run all tests
|
|
test: test-fe test-be
|
|
|
|
# Run frontend tests
|
|
test-fe:
|
|
@echo "Running frontend tests..."
|
|
@cd archon-ui-main && npm test
|
|
|
|
# Run backend tests
|
|
test-be:
|
|
@echo "Running backend tests..."
|
|
@cd python && uv run pytest
|
|
|
|
# Run all linters
|
|
lint: lint-fe lint-be
|
|
|
|
# Run frontend linter
|
|
lint-fe:
|
|
@echo "Linting frontend..."
|
|
@cd archon-ui-main && npm run lint
|
|
|
|
# Run backend linter
|
|
lint-be:
|
|
@echo "Linting backend..."
|
|
@cd python && uv run ruff check --fix
|
|
|
|
# Clean everything (with confirmation)
|
|
clean:
|
|
@echo "⚠️ This will remove all containers and volumes"
|
|
@read -p "Are you sure? (y/N) " -n 1 -r; \
|
|
echo; \
|
|
if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
|
|
$(COMPOSE) down -v --remove-orphans; \
|
|
echo "✓ Cleaned"; \
|
|
else \
|
|
echo "Cancelled"; \
|
|
fi
|
|
|
|
.DEFAULT_GOAL := help
|