#!/bin/sh set -e # Commander reads optional flags from env (e.g. PROXY="") — empty values crash grab. for var in PROXY DAYS TIMEOUT LANG OUTPUT GZIP JSON CURL; do eval "val=\$$var" if [ -z "$val" ]; then unset "$var" 2>/dev/null || true fi done grab_epg() { cmd="npm run grab --" if [ -n "$SITES" ]; then if [ -n "$OUTPUT" ]; then output="$OUTPUT" else output='guides/{site}.xml' fi cmd="$cmd --sites=$SITES --output=$output" else cmd="$cmd --channels=public/channels.xml --output=${OUTPUT:-public/guide.xml}" fi if [ -n "$MAX_CONNECTIONS" ]; then cmd="$cmd --maxConnections=$MAX_CONNECTIONS" fi if [ -n "$DAYS" ]; then cmd="$cmd --days=$DAYS" fi if [ -n "$TIMEOUT" ]; then cmd="$cmd --timeout=$TIMEOUT" fi if [ -n "$DELAY" ] && [ "$DELAY" != "0" ]; then cmd="$cmd --delay=$DELAY" fi if [ -n "$LANG" ]; then cmd="$cmd --lang=$LANG" fi if [ -n "$PROXY" ]; then cmd="$cmd --proxy=$PROXY" fi if [ "$GZIP" = "true" ]; then cmd="$cmd --gzip" fi if [ "$JSON" = "true" ]; then cmd="$cmd --json" fi if [ "$CURL" = "true" ]; then cmd="$cmd --curl" fi echo "Running: $cmd" eval $cmd } if [ "$1" = "grab" ]; then grab_epg exit 0 fi mkdir -p /app/guides if [ -n "$SITES" ]; then echo "Starting initial EPG data grab for sites: $SITES" grab_epg fi if [ -n "$CRON_SCHEDULE" ] && [ -n "$SITES" ]; then echo "Setting up cron job with schedule: $CRON_SCHEDULE" pm2 start --name epg-grabber /app/entrypoint.sh --no-autorestart --cron-restart="$CRON_SCHEDULE" -- grab pm2 logs epg-grabber & fi echo "Starting server on port 3000 to serve EPG files from /app/guides" npx serve -p 3000 /app/guides & tail -f /dev/null