setup setup
This commit is contained in:
Executable
+108
@@ -0,0 +1,108 @@
|
||||
#!/bin/bash
|
||||
# Production entrypoint script for ClassroomCopilot API
|
||||
# Supports running initialization tasks before starting the server
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_status() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if we should run initialization
|
||||
RUN_INIT="${RUN_INIT:-false}"
|
||||
INIT_MODE="${INIT_MODE:-infra}" # Default to 'infra', can be 'infra', 'full', or comma-separated list
|
||||
|
||||
# If RUN_INIT is true, run initialization tasks
|
||||
if [ "$RUN_INIT" = "true" ]; then
|
||||
print_status "Running initialization tasks (mode: $INIT_MODE)..."
|
||||
|
||||
# Split INIT_MODE by comma if it contains multiple modes
|
||||
IFS=',' read -ra MODES <<< "$INIT_MODE"
|
||||
|
||||
for mode in "${MODES[@]}"; do
|
||||
mode=$(echo "$mode" | xargs) # Trim whitespace
|
||||
print_status "Running initialization mode: $mode"
|
||||
|
||||
case "$mode" in
|
||||
"infra")
|
||||
print_status "Setting up infrastructure (Neo4j schema, calendar, Supabase buckets)..."
|
||||
python3 main.py --mode infra || {
|
||||
print_error "Infrastructure setup failed!"
|
||||
exit 1
|
||||
}
|
||||
print_success "Infrastructure setup completed"
|
||||
;;
|
||||
"demo-school")
|
||||
print_status "Creating demo school..."
|
||||
python3 main.py --mode demo-school || {
|
||||
print_error "Demo school creation failed!"
|
||||
exit 1
|
||||
}
|
||||
print_success "Demo school creation completed"
|
||||
;;
|
||||
"demo-users")
|
||||
print_status "Creating demo users..."
|
||||
python3 main.py --mode demo-users || {
|
||||
print_error "Demo users creation failed!"
|
||||
exit 1
|
||||
}
|
||||
print_success "Demo users creation completed"
|
||||
;;
|
||||
"gais-data")
|
||||
print_status "Importing GAIS data..."
|
||||
python3 main.py --mode gais-data || {
|
||||
print_error "GAIS data import failed!"
|
||||
exit 1
|
||||
}
|
||||
print_success "GAIS data import completed"
|
||||
;;
|
||||
"full")
|
||||
print_status "Running full initialization..."
|
||||
python3 main.py --mode infra || exit 1
|
||||
python3 main.py --mode demo-school || exit 1
|
||||
python3 main.py --mode demo-users || exit 1
|
||||
python3 main.py --mode gais-data || exit 1
|
||||
print_success "Full initialization completed"
|
||||
;;
|
||||
*)
|
||||
print_warning "Unknown initialization mode: $mode (skipping)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
print_success "All initialization tasks completed"
|
||||
|
||||
# If this is the init service (not backend), exit after init
|
||||
if [ "$1" = "init-only" ] || [ -n "$INIT_ONLY" ]; then
|
||||
print_status "Initialization complete - exiting (init-only mode)"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Start the production server (unless init-only mode)
|
||||
if [ "$1" != "init-only" ] && [ -z "$INIT_ONLY" ]; then
|
||||
print_status "Starting production server..."
|
||||
exec ./start.sh prod
|
||||
else
|
||||
print_status "Init-only mode - not starting server"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user