71 lines
1.9 KiB
Bash
Executable File
71 lines
1.9 KiB
Bash
Executable File
#!/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 |