Files
spinifex/scripts/dev-setup.sh
T

171 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
# Hive Platform Development Environment Setup
# This script sets up a complete development environment for the Hive platform
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
MULGA_ROOT="$(cd "$PROJECT_ROOT/.." && pwd)"
# Default configuration
NATS_PORT=4222
PREDASTORE_PORT=8443
HIVE_GATEWAY_PORT=9999
DATA_DIR="$HOME/hive"
# Use CONFIG_DIR environment variable if set, otherwise default to ~/hive/config
CONFIG_DIR="${CONFIG_DIR:-$HOME/hive/config}"
echo "🚀 Setting up Hive development environment..."
echo "Project root: $PROJECT_ROOT"
echo "Data directory: $DATA_DIR"
# Create necessary directories
mkdir -p "$DATA_DIR"/{nats,predastore,viperblock,logs,hive}
mkdir -p "$CONFIG_DIR"
# Function to check if command exists
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Function to check if port is available
port_available() {
! nc -z localhost "$1" 2>/dev/null
}
# Check dependencies
echo "🔍 Checking dependencies..."
# Check for required commands
required_commands=("go" "make")
for cmd in "${required_commands[@]}"; do
if command_exists "$cmd"; then
echo "✅ $cmd found"
else
echo "❌ $cmd not found. Please install $cmd"
case "$cmd" in
"go")
echo " Install Go: https://golang.org/dl/"
;;
esac
fi
done
# Check optional commands
optional_commands=("air" "nbdkit")
for cmd in "${optional_commands[@]}"; do
if command_exists "$cmd"; then
echo "✅ $cmd found (optional)"
else
echo "⚠️ $cmd not found (optional)"
case "$cmd" in
"air")
echo " Install air for hot reloading: go install github.com/cosmtrek/air@latest"
;;
"nbdkit")
echo " Install nbdkit: sudo apt-get install nbdkit (Ubuntu/Debian)"
;;
esac
fi
done
# Check component repositories
echo ""
echo "📦 Checking component repositories..."
components=("viperblock" "predastore")
for component in "${components[@]}"; do
component_path="$MULGA_ROOT/$component"
if [[ -d "$component_path" ]]; then
echo "✅ $component found at $component_path"
if [[ -f "$component_path/go.mod" ]]; then
echo " Go module verified"
else
echo " ⚠️ No go.mod found in $component"
fi
else
echo "❌ $component not found at $component_path"
echo " Run: ./scripts/clone-deps.sh"
fi
done
# Check port availability
echo ""
echo "🔌 Checking port availability..."
ports=("$NATS_PORT:NATS" "$PREDASTORE_PORT:Predastore" "$HIVE_GATEWAY_PORT:Hive Gateway")
for port_info in "${ports[@]}"; do
port="${port_info%:*}"
service="${port_info#*:}"
if port_available "$port"; then
echo "✅ Port $port available for $service"
else
echo "⚠️ Port $port already in use (needed for $service)"
fi
done
# Build Hive first (needed for admin init)
echo ""
echo "🔨 Building Hive..."
cd "$PROJECT_ROOT"
make build
echo "✅ Hive built successfully"
# Initialize Hive configuration using admin init
echo ""
echo "🔐 Initializing Hive configuration..."
if [[ ! -f "$CONFIG_DIR/hive.toml" ]]; then
echo "📋 Running hive admin init..."
./bin/hive admin init --config-dir "$CONFIG_DIR"
echo "✅ Hive configuration initialized"
else
echo "✅ Hive configuration already exists"
echo " To re-initialize, run: ./bin/hive admin init --force"
fi
# Build components
echo ""
echo "🔨 Building components..."
# Build Viperblock
if [[ -d "$MULGA_ROOT/viperblock" ]]; then
echo "📦 Building Viperblock..."
cd "$MULGA_ROOT/viperblock"
make build
echo "✅ Viperblock built successfully"
else
echo "⚠️ Viperblock directory not found, skipping build"
fi
# Build Predastore
if [[ -d "$MULGA_ROOT/predastore" ]]; then
echo "📦 Building Predastore..."
cd "$MULGA_ROOT/predastore"
make build
echo "✅ Predastore built successfully"
else
echo "⚠️ Predastore directory not found, skipping build"
fi
echo ""
echo "🎉 Development environment setup complete!"
echo ""
echo "🚀 To start the development environment:"
echo " ./scripts/start-dev.sh"
echo ""
echo "🛑 To stop the development environment:"
echo " ./scripts/stop-dev.sh"
echo ""
echo "🔧 Development endpoints:"
echo " - Hive Gateway: https://localhost:$HIVE_GATEWAY_PORT"
echo " - Predastore S3: https://localhost:$PREDASTORE_PORT"
echo " - NATS: nats://localhost:$NATS_PORT"
echo ""
echo "📊 Monitor logs:"
echo " tail -f $DATA_DIR/logs/*.log"
echo ""
echo "🧪 Test with AWS CLI:"
echo " aws --endpoint-url https://localhost:$HIVE_GATEWAY_PORT --no-verify-ssl ec2 describe-instances"