#!/bin/bash SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) PROJECT_DIR=$(cd "$SCRIPT_DIR/.." && pwd) # Load environment variables source "$SCRIPT_DIR/environment.sh" # Build first echo "🔨 Building supervisor..." "$SCRIPT_DIR/build.sh" # Validate required environment variables if [ -z "$ADMIN_SECRETS" ]; then echo "❌ Error: ADMIN_SECRETS not set in .env" echo " Generate a secret with: ./scripts/generate_secret.sh" exit 1 fi # Set defaults from env vars REDIS_URL="${REDIS_URL:-redis://127.0.0.1:6379}" PORT="${PORT:-3030}" BIND_ADDRESS="${BIND_ADDRESS:-127.0.0.1}" LOG_LEVEL="${LOG_LEVEL:-info}" cd "$PROJECT_DIR" # Build command with flags from env vars SUPERVISOR_CMD="target/release/supervisor --redis-url $REDIS_URL --port $PORT --bind-address $BIND_ADDRESS" # Add admin secrets IFS=',' read -ra SECRETS <<< "$ADMIN_SECRETS" for secret in "${SECRETS[@]}"; do SUPERVISOR_CMD="$SUPERVISOR_CMD --admin-secret $secret" done # Add user secrets if provided if [ ! -z "$USER_SECRETS" ]; then IFS=',' read -ra SECRETS <<< "$USER_SECRETS" for secret in "${SECRETS[@]}"; do SUPERVISOR_CMD="$SUPERVISOR_CMD --user-secret $secret" done fi # Add register secrets if provided if [ ! -z "$REGISTER_SECRETS" ]; then IFS=',' read -ra SECRETS <<< "$REGISTER_SECRETS" for secret in "${SECRETS[@]}"; do SUPERVISOR_CMD="$SUPERVISOR_CMD --register-secret $secret" done fi # Add mycelium URL if provided if [ ! -z "$MYCELIUM_URL" ]; then SUPERVISOR_CMD="$SUPERVISOR_CMD --mycelium-url $MYCELIUM_URL" fi # Add runners if provided if [ ! -z "$RUNNERS" ]; then SUPERVISOR_CMD="$SUPERVISOR_CMD --runners $RUNNERS" fi echo "" echo "🚀 Starting Hero Supervisor" echo " Redis: $REDIS_URL" echo " Port: $PORT" echo " Log Level: $LOG_LEVEL" echo "" # Run supervisor directly with output visible exec env RUST_LOG="$LOG_LEVEL" RUST_LOG_STYLE=never $SUPERVISOR_CMD