#!/usr/bin/env bash # Installa crontab replay su server produzione (utente corrente). set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" RUNNER="${ROOT}/scripts/cron/run_rails_task.sh" SCAN_LOGS="${ROOT}/scripts/cron/scan_ops_logs.sh" ENV_FILE="${ROOT}/.env" VIDEOS_ROOT="/media/videos/matchlivetv" if [ -f "$ENV_FILE" ]; then line="$(grep -E '^MATCHLIVETV_VIDEOS_ROOT=' "$ENV_FILE" 2>/dev/null | tail -1 || true)" if [ -n "$line" ]; then VIDEOS_ROOT="${line#MATCHLIVETV_VIDEOS_ROOT=}" VIDEOS_ROOT="${VIDEOS_ROOT%\"}" VIDEOS_ROOT="${VIDEOS_ROOT#\"}" fi fi LOG_DIR="${MATCHLIVETV_LOG_DIR:-${VIDEOS_ROOT}/log}" LOG_FILE="${LOG_DIR}/cron-replay.log" OPS_LOG_FILE="${LOG_DIR}/cron-ops.log" chmod +x "$RUNNER" "$SCAN_LOGS" mkdir -p "$LOG_DIR" MARKER="# matchlivetv-replay-cron" CRON_BLOCK="${MARKER} 30 * * * * mkdir -p ${LOG_DIR} && ${RUNNER} recordings:cleanup_local >> ${LOG_FILE} 2>&1 0 3 * * * mkdir -p ${LOG_DIR} && ${RUNNER} recordings:purge_expired >> ${LOG_FILE} 2>&1 0 8 * * * mkdir -p ${LOG_DIR} && ${RUNNER} recordings:expiry_warnings >> ${LOG_FILE} 2>&1 */10 * * * * mkdir -p ${LOG_DIR} && ${SCAN_LOGS} >> ${OPS_LOG_FILE} 2>&1 " existing="$(crontab -l 2>/dev/null || true)" filtered="$(echo "$existing" | grep -v "$MARKER" | grep -v 'run_rails_task\.sh' | grep -v 'scan_ops_logs\.sh' || true)" if echo "$existing" | grep -q "$MARKER"; then echo "Crontab replay giĆ  presente, aggiorno..." fi { [ -n "$filtered" ] && echo "$filtered" echo "$CRON_BLOCK" } | sed '/^$/d' | crontab - echo "Log persistenti: ${LOG_DIR}" echo "Crontab installato:" crontab -l | grep -A4 "$MARKER"