archy/scripts/dev-setup.sh
2026-01-24 22:59:20 +00:00

95 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# Development environment setup script
# Installs dependencies and sets up development environment
set -e
echo "🚀 Setting up Archipelago development environment..."
# Check prerequisites
echo "📋 Checking prerequisites..."
command -v rustc >/dev/null 2>&1 || { echo "❌ Rust is required. Install from https://rustup.rs/"; exit 1; }
command -v node >/dev/null 2>&1 || { echo "❌ Node.js is required. Install from https://nodejs.org/"; exit 1; }
command -v cargo >/dev/null 2>&1 || { echo "❌ Cargo is required. Install Rust toolchain."; exit 1; }
echo "✅ Prerequisites check passed"
# Get project root (assumes script is in scripts/)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
echo "📁 Project root: $PROJECT_ROOT"
# Check if we're in the right directory structure
if [ ! -d "$PROJECT_ROOT/core" ] && [ ! -d "$PROJECT_ROOT/neode-ui" ]; then
echo "⚠️ Warning: This script expects to be run from the Archipelago workspace."
echo " If you're working with Code/Archipelago, you may need to adjust paths."
read -p "Continue anyway? (y/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
# Setup frontend
if [ -d "$PROJECT_ROOT/neode-ui" ]; then
echo "📦 Setting up frontend..."
cd "$PROJECT_ROOT/neode-ui"
if [ ! -d "node_modules" ]; then
npm install
else
echo " node_modules already exists, skipping install"
fi
else
echo "⚠️ neode-ui directory not found, skipping frontend setup"
fi
# Setup backend
if [ -d "$PROJECT_ROOT/core" ]; then
echo "🔧 Setting up backend..."
cd "$PROJECT_ROOT/core"
# Check if Cargo.toml exists
if [ -f "Cargo.toml" ]; then
echo " Fetching Rust dependencies..."
cargo fetch
else
echo "⚠️ Cargo.toml not found in core/, skipping backend setup"
fi
else
echo "⚠️ core directory not found, skipping backend setup"
fi
# Check for Podman (optional)
if command -v podman >/dev/null 2>&1; then
echo "✅ Podman found: $(podman --version)"
if [[ "$OSTYPE" == "darwin"* ]]; then
if ! podman machine list | grep -q "running"; then
echo "⚠️ Podman machine not running. Start with: podman machine start"
fi
fi
else
echo "⚠️ Podman not found (optional, needed for container features)"
echo " Install: https://podman.io/getting-started/installation"
fi
# Check for PostgreSQL (optional)
if command -v psql >/dev/null 2>&1; then
echo "✅ PostgreSQL found: $(psql --version)"
else
echo "⚠️ PostgreSQL not found (optional, needed for backend database)"
echo " Install: https://www.postgresql.org/download/"
echo " Or use Docker: docker run -d --name postgres -e POSTGRES_PASSWORD=dev -p 5432:5432 postgres:15"
fi
echo ""
echo "✅ Development environment setup complete!"
echo ""
echo "Next steps:"
echo " 1. Start backend: cd core && cargo run --bin startbox"
echo " 2. Start frontend: cd neode-ui && npm run dev"
echo ""
echo "Or use the mock backend for UI-only development:"
echo " cd neode-ui && npm run dev:mock"