#!/bin/bash # Script de transfert vers Mac mini pour compilation iOS # Usage: ./transfer-to-mac.sh set -e # Couleurs pour les messages RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Configuration Mac mini MAC_MINI_IP="192.168.1.34" MAC_USER="pierre" echo -e "${BLUE}=== Transfert vers Mac mini pour iOS ===${NC}" echo "" # Vérifier que nous sommes dans le bon dossier if [ ! -f "pubspec.yaml" ]; then echo -e "${RED}Erreur: Ce script doit être exécuté depuis le dossier racine de l'application Flutter${NC}" echo -e "${RED}Fichier pubspec.yaml introuvable${NC}" exit 1 fi # Synchroniser la version depuis ../VERSION echo -e "${BLUE}📋 Synchronisation de la version depuis ../VERSION...${NC}" echo "" VERSION_FILE="../VERSION" if [ ! -f "$VERSION_FILE" ]; then echo -e "${RED}Erreur: Fichier VERSION introuvable : $VERSION_FILE${NC}" exit 1 fi # Lire la version depuis le fichier (enlever espaces/retours à la ligne) VERSION_NUMBER=$(cat "$VERSION_FILE" | tr -d '\n\r ' | tr -d '[:space:]') if [ -z "$VERSION_NUMBER" ]; then echo -e "${RED}Erreur: Le fichier VERSION est vide${NC}" exit 1 fi echo -e "${YELLOW}Version lue depuis $VERSION_FILE :${NC} $VERSION_NUMBER" # Calculer le versionCode (supprimer les points) VERSION_CODE=$(echo $VERSION_NUMBER | tr -d '.') if [ -z "$VERSION_CODE" ]; then echo -e "${RED}Erreur: Impossible de calculer le versionCode${NC}" exit 1 fi echo -e "${YELLOW}Version code calculé :${NC} $VERSION_CODE" # Mettre à jour pubspec.yaml echo -e "${BLUE}Mise à jour de pubspec.yaml...${NC}" sed -i.bak "s/^version:.*/version: $VERSION_NUMBER+$VERSION_CODE/" pubspec.yaml # Vérifier que la mise à jour a réussi UPDATED_VERSION=$(grep "^version:" pubspec.yaml | sed 's/version: //' | tr -d ' ') if [ "$UPDATED_VERSION" != "$VERSION_NUMBER+$VERSION_CODE" ]; then echo -e "${RED}Erreur: Échec de la mise à jour de pubspec.yaml${NC}" echo -e "${RED}Attendu : $VERSION_NUMBER+$VERSION_CODE${NC}" echo -e "${RED}Obtenu : $UPDATED_VERSION${NC}" exit 1 fi echo -e "${GREEN}✓ pubspec.yaml mis à jour : version: $VERSION_NUMBER+$VERSION_CODE${NC}" echo "" VERSION="$VERSION_NUMBER+$VERSION_CODE" # Construire le chemin de destination avec numéro de version DESTINATION_DIR="app_$VERSION_CODE" DESTINATION="$MAC_USER@$MAC_MINI_IP:/Users/pierre/dev/geosector/$DESTINATION_DIR" echo -e "${YELLOW}Configuration du transfert :${NC}" echo -e " Source : $(pwd)" echo -e " Destination : $DESTINATION" echo "" # Transfert réel (rsync créera le dossier automatiquement) echo "" echo -e "${GREEN}Démarrage du transfert...${NC}" echo -e "${YELLOW}Note: Vous allez devoir saisir le mot de passe du Mac mini${NC}" echo -e "${BLUE}rsync va créer le dossier de destination automatiquement${NC}" echo "" rsync -avz --progress \ -e "ssh -o IdentitiesOnly=yes -o PubkeyAuthentication=no -o PreferredAuthentications=password" \ --rsync-path="mkdir -p /Users/pierre/dev/geosector/$DESTINATION_DIR && rsync" \ --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/' \ --exclude='android/build/' \ --exclude='*.aab' \ --exclude='*.apk' \ ./ "$DESTINATION/" if [ $? -eq 0 ]; then echo "" echo -e "${GREEN}=========================================${NC}" echo -e "${GREEN} ✓ Transfert terminé avec succès !${NC}" echo -e "${GREEN}=========================================${NC}" echo "" echo -e "${YELLOW}Dossier sur le Mac :${NC} /Users/pierre/dev/geosector/$DESTINATION_DIR" echo "" echo -e "${YELLOW}Prochaines étapes sur le Mac mini :${NC}" echo " 1. Se connecter : ssh $MAC_USER@$MAC_MINI_IP" echo " 2. Aller dans le dossier : cd /Users/pierre/dev/geosector/$DESTINATION_DIR" echo " 3. Lancer le build : ./ios-build-mac.sh" echo "" else echo -e "${RED}Erreur lors du transfert${NC}" exit 1 fi