#!/usr/bin/env bash
set -uo pipefail

# Relance quotidienne de la migration, à lancer via cron.
# Gmail bride l'import IMAP à ~1 Go/jour/boîte : une grosse boîte a besoin de
# plusieurs jours. Ce wrapper relance simplement la migration chaque jour ;
# imapsync reprend où il s'était arrêté (les boîtes déjà terminées sont
# ignorées grâce à SKIP_DONE). Journalise dans ~/.migrer/logs/cron-AAAAMMJJ.log.
#
# Installation (une fois) :
#   ./migrer-cron.sh --install     ajoute l'entrée cron (2h30 chaque nuit)
#   ./migrer-cron.sh --uninstall   la retire
#   ./migrer-cron.sh               lance un cycle maintenant (ce que fait cron)

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_DIR="${LOG_DIR:-$HOME/.migrer/logs}"
JOBS="${JOBS:-3}"
CRON_MARK="# migrer-qlf-quotidien"
CRON_LINE="30 2 * * * JOBS=$JOBS $SCRIPT_DIR/migrer-cron.sh $CRON_MARK"

case "${1:-}" in
  --install)
    tmp="$(mktemp)"
    crontab -l 2>/dev/null | grep -v "$CRON_MARK" > "$tmp" || true
    echo "$CRON_LINE" >> "$tmp"
    crontab "$tmp" && rm -f "$tmp"
    echo "Cron installé : migration chaque nuit à 2h30 (JOBS=$JOBS)."
    echo "Vérifier avec : crontab -l"
    exit 0 ;;
  --uninstall)
    tmp="$(mktemp)"
    crontab -l 2>/dev/null | grep -v "$CRON_MARK" > "$tmp" || true
    crontab "$tmp" && rm -f "$tmp"
    echo "Cron retiré."
    exit 0 ;;
esac

# Exécution d'un cycle (cas cron, ou lancement manuel).
mkdir -p "$LOG_DIR"
day="$(date +%Y%m%d)"
exec >> "$LOG_DIR/cron-$day.log" 2>&1
echo "===== $(date '+%F %T') — début cycle migration (JOBS=$JOBS) ====="
JOBS="$JOBS" "$SCRIPT_DIR/migrer-masse-parallele.sh"
echo "===== $(date '+%F %T') — fin cycle ====="
