#!/bin/bash

# Script de synchronisation depuis le Mac mini vers Debian
# Usage: ./transfer-from-mac.sh

set -e

# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Configuration Mac mini
MAC_MINI_IP="192.168.1.34"  # À configurer avec l'IP de votre Mac mini
MAC_USER="pierre"
DEFAULT_PATH="/Users/pierre/dev/geosector/app..."

echo -e "${YELLOW}=== Configuration du transfert ===${NC}"
echo ""

# Demander le chemin de l'application sur le Mac mini
echo -e "${YELLOW}Chemin de l'application sur le Mac mini${NC}"
read -p "Chemin [$DEFAULT_PATH]: " MAC_PATH
MAC_PATH=${MAC_PATH:-$DEFAULT_PATH}

# Vérifier que le chemin a été modifié (ne se termine pas par ...)
if [[ "$MAC_PATH" == *"..." ]]; then
    echo -e "${RED}Erreur: Vous devez compléter le chemin (les '...' doivent être remplacés)${NC}"
    echo "Exemple: /Users/pierre/dev/geosector/app"
    exit 1
fi

# Construire la source complète
SOURCE="$MAC_USER@$MAC_MINI_IP:$MAC_PATH"
DESTINATION="/home/pierre/dev/geosector/app/"
BACKUP_DIR="/home/pierre/dev/geosector/app-backups"
BACKUP_NAME="app-backup-$(date +%Y%m%d-%H%M%S).tar.gz"

echo ""
echo -e "${YELLOW}=== Synchronisation depuis Mac mini ===${NC}"
echo "Source: $SOURCE"
echo "Destination: $DESTINATION"
echo ""

# Proposer de faire un backup
read -p "Voulez-vous faire un backup du dossier local avant le transfert ? (O/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
    echo -e "${YELLOW}Création du backup...${NC}"

    # Créer le dossier de backup s'il n'existe pas
    mkdir -p "$BACKUP_DIR"

    # Créer l'archive en excluant les dossiers inutiles
    tar -czf "$BACKUP_DIR/$BACKUP_NAME" \
        --exclude='build' \
        --exclude='.dart_tool' \
        --exclude='ios/Pods' \
        --exclude='ios/.symlinks' \
        --exclude='macos/Pods' \
        --exclude='linux/flutter/ephemeral' \
        --exclude='windows/flutter/ephemeral' \
        --exclude='.pub-cache' \
        -C /home/pierre/dev/geosector app

    echo -e "${GREEN}✓ Backup créé: $BACKUP_DIR/$BACKUP_NAME${NC}"

    # Afficher la taille du backup
    BACKUP_SIZE=$(du -h "$BACKUP_DIR/$BACKUP_NAME" | cut -f1)
    echo "Taille du backup: $BACKUP_SIZE"
    echo ""
fi

# Demander confirmation pour le dry-run
read -p "Voulez-vous d'abord faire un dry-run (simulation) ? (o/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Oo]$ ]]; then
    echo -e "${YELLOW}Mode dry-run (simulation)...${NC}"
    rsync -avzn --progress \
      --exclude='build/' \
      --exclude='.dart_tool/' \
      --exclude='ios/Pods/' \
      --exclude='ios/.symlinks/' \
      --exclude='macos/Pods/' \
      --exclude='linux/flutter/ephemeral/' \
      --exclude='windows/flutter/ephemeral/' \
      --exclude='.pub-cache/' \
      "$SOURCE/" "$DESTINATION"

    echo ""
    read -p "Voulez-vous continuer avec le transfert réel ? (o/N) " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Oo]$ ]]; then
        echo -e "${YELLOW}Transfert annulé${NC}"
        exit 0
    fi
fi

echo -e "${GREEN}Démarrage du transfert...${NC}"
rsync -avz --progress \
  --exclude='build/' \
  --exclude='.dart_tool/' \
  --exclude='ios/Pods/' \
  --exclude='ios/.symlinks/' \
  --exclude='macos/Pods/' \
  --exclude='linux/flutter/ephemeral/' \
  --exclude='windows/flutter/ephemeral/' \
  --exclude='.pub-cache/' \
  "$SOURCE/" "$DESTINATION"

echo ""
echo -e "${GREEN}✓ Transfert terminé avec succès${NC}"
