#!/usr/bin/env bash # ───────────────────────────────────────────────────────────────────────────── # setup-cron.sh · dust-sync-3f74b8 # Registers (or updates) the keep-alive cronjob. # Run once after cloning / setting up the project. # ───────────────────────────────────────────────────────────────────────────── set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" KEEP_ALIVE="$SCRIPT_DIR/keep-alive.sh" LOG_FILE="$SCRIPT_DIR/keep-alive.log" CRON_TAG="dust-sync-3f74b8" # unique identifier for this job # ── Pre-flight checks ───────────────────────────────────────────────────────── if [[ ! -f "$KEEP_ALIVE" ]]; then echo "[ERROR] keep-alive.sh not found at: $KEEP_ALIVE" >&2 exit 1 fi if [[ ! -f "$SCRIPT_DIR/.keep-alive.env" ]]; then echo "[ERROR] .keep-alive.env not found." echo " Copy .keep-alive.env.example → .keep-alive.env and fill in your values." exit 1 fi # Ensure script is executable chmod +x "$KEEP_ALIVE" # ── Install cron entry ──────────────────────────────────────────────────────── CRON_LINE="*/15 * * * * $KEEP_ALIVE >> $LOG_FILE 2>&1 # $CRON_TAG" # Dump existing crontab (ignore error when empty), remove old entry, add new TMPFILE="$(mktemp)" trap 'rm -f "$TMPFILE"' EXIT crontab -l 2>/dev/null | grep -v "# $CRON_TAG" > "$TMPFILE" || true echo "$CRON_LINE" >> "$TMPFILE" crontab "$TMPFILE" echo "" echo " Cronjob installed successfully." echo " ─────────────────────────────────────────────────" echo " Tag : $CRON_TAG" echo " Script : $KEEP_ALIVE" echo " Schedule: every 15 minutes" echo " Log : $LOG_FILE" echo " ─────────────────────────────────────────────────" echo "" echo " Active crontab:" crontab -l | grep "$CRON_TAG" echo "" echo " Run manually to test:" echo " bash $KEEP_ALIVE"