feat: Version 3.6.2 - Correctifs tâches #17-20
- #17: Amélioration gestion des secteurs et statistiques - #18: Optimisation services API et logs - #19: Corrections Flutter widgets et repositories - #20: Fix création passage - détection automatique ope_users.id vs users.id Suppression dossier web/ (migration vers app Flutter) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
249
app/ios.sh
Executable file
249
app/ios.sh
Executable file
@@ -0,0 +1,249 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script de génération iOS pour GEOSECTOR
|
||||
# Usage: ./ios.sh
|
||||
|
||||
set -e # Arrêter le script en cas d'erreur
|
||||
|
||||
# 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"
|
||||
|
||||
# Fonction pour afficher les messages
|
||||
print_message() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
# Fonction pour gérer les erreurs
|
||||
handle_error() {
|
||||
print_error "Une erreur est survenue lors de l'exécution de la commande"
|
||||
print_error "Ligne $1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Trap pour capturer les erreurs
|
||||
trap 'handle_error $LINENO' ERR
|
||||
|
||||
# Vérifier que nous sommes dans le bon dossier
|
||||
if [ ! -f "pubspec.yaml" ]; then
|
||||
print_error "Ce script doit être exécuté depuis le dossier racine de l'application Flutter"
|
||||
print_error "Fichier pubspec.yaml introuvable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_message "========================================="
|
||||
print_message " GEOSECTOR - Génération iOS"
|
||||
print_message "========================================="
|
||||
echo
|
||||
|
||||
# Vérifier que Flutter est installé
|
||||
if ! command -v flutter &> /dev/null; then
|
||||
print_error "Flutter n'est pas installé ou n'est pas dans le PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Étape 1 : Synchroniser la version depuis ../VERSION
|
||||
print_message "Étape 1/4 : Synchronisation de la version..."
|
||||
echo
|
||||
|
||||
VERSION_FILE="../VERSION"
|
||||
if [ ! -f "$VERSION_FILE" ]; then
|
||||
print_error "Fichier VERSION introuvable : $VERSION_FILE"
|
||||
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
|
||||
print_error "Le fichier VERSION est vide"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_message "Version lue depuis $VERSION_FILE : $VERSION_NUMBER"
|
||||
|
||||
# Calculer le versionCode (supprimer les points)
|
||||
VERSION_CODE=$(echo $VERSION_NUMBER | tr -d '.')
|
||||
if [ -z "$VERSION_CODE" ]; then
|
||||
print_error "Impossible de calculer le versionCode"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_message "Version code calculé : $VERSION_CODE"
|
||||
|
||||
# Mettre à jour pubspec.yaml
|
||||
print_message "Mise à jour de pubspec.yaml..."
|
||||
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: //')
|
||||
if [ "$UPDATED_VERSION" != "$VERSION_NUMBER+$VERSION_CODE" ]; then
|
||||
print_error "Échec de la mise à jour de pubspec.yaml"
|
||||
print_error "Attendu : $VERSION_NUMBER+$VERSION_CODE"
|
||||
print_error "Obtenu : $UPDATED_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "pubspec.yaml mis à jour : version: $VERSION_NUMBER+$VERSION_CODE"
|
||||
echo
|
||||
|
||||
# Récupérer la version finale pour l'affichage
|
||||
VERSION="$VERSION_NUMBER-$VERSION_CODE"
|
||||
print_message "Version finale : $VERSION"
|
||||
print_message "Version code : $VERSION_CODE"
|
||||
echo
|
||||
|
||||
# Étape 2 : Vérifier la connexion au Mac mini
|
||||
print_message "Étape 2/4 : Vérification de la connexion au Mac mini..."
|
||||
echo
|
||||
|
||||
print_message "Test de connexion à $MAC_USER@$MAC_MINI_IP..."
|
||||
|
||||
if ssh -o ConnectTimeout=5 -o BatchMode=yes "$MAC_USER@$MAC_MINI_IP" exit 2>/dev/null; then
|
||||
print_success "Connexion SSH au Mac mini établie"
|
||||
else
|
||||
print_warning "Impossible de se connecter au Mac mini en mode non-interactif"
|
||||
print_message "Le transfert demandera votre mot de passe"
|
||||
fi
|
||||
echo
|
||||
|
||||
# Étape 3 : Nettoyer le projet
|
||||
print_message "Étape 3/4 : Nettoyage du projet local..."
|
||||
echo
|
||||
|
||||
print_message "Nettoyage en cours..."
|
||||
flutter clean
|
||||
print_success "Projet nettoyé"
|
||||
echo
|
||||
|
||||
# Étape 4 : Transfert vers Mac mini
|
||||
print_message "Étape 4/4 : Transfert vers Mac mini..."
|
||||
echo
|
||||
|
||||
# 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"
|
||||
|
||||
print_message "Configuration du transfert :"
|
||||
print_message " Source : $(pwd)"
|
||||
print_message " Destination : $DESTINATION"
|
||||
echo
|
||||
|
||||
# Supprimer le dossier de destination s'il existe déjà
|
||||
print_message "Suppression du dossier existant sur le Mac mini (si présent)..."
|
||||
ssh -o IdentitiesOnly=yes -o PubkeyAuthentication=no -o PreferredAuthentications=password \
|
||||
"$MAC_USER@$MAC_MINI_IP" "rm -rf /Users/pierre/dev/geosector/$DESTINATION_DIR" 2>/dev/null || true
|
||||
print_success "Dossier nettoyé"
|
||||
echo
|
||||
|
||||
print_warning "Note: Vous allez devoir saisir le mot de passe du Mac mini"
|
||||
print_message "rsync va créer le dossier de destination automatiquement"
|
||||
echo
|
||||
|
||||
# Transfert réel (rsync créera le dossier automatiquement)
|
||||
# Options SSH pour éviter "too many authentication failures"
|
||||
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
|
||||
print_success "Transfert terminé avec succès !"
|
||||
echo
|
||||
else
|
||||
print_error "Erreur lors du transfert"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Afficher le résumé
|
||||
echo
|
||||
print_message "========================================="
|
||||
print_success " TRANSFERT TERMINÉ AVEC SUCCÈS !"
|
||||
print_message "========================================="
|
||||
echo
|
||||
print_message "Version : ${GREEN}$VERSION${NC}"
|
||||
print_message "Dossier sur le Mac : ${GREEN}/Users/pierre/dev/geosector/$DESTINATION_DIR${NC}"
|
||||
echo
|
||||
|
||||
# Proposer de lancer le build automatiquement
|
||||
print_message "Voulez-vous lancer le build iOS maintenant ?"
|
||||
echo
|
||||
print_message " ${GREEN}[A]${NC} Se connecter en SSH et lancer le build automatiquement"
|
||||
print_message " ${YELLOW}[B]${NC} Afficher les instructions manuelles (défaut)"
|
||||
echo
|
||||
read -p "Votre choix (A/B) [défaut: B] : " -n 1 -r BUILD_CHOICE
|
||||
echo
|
||||
echo
|
||||
|
||||
if [[ $BUILD_CHOICE =~ ^[Aa]$ ]]; then
|
||||
print_message "Connexion au Mac mini et lancement du build..."
|
||||
echo
|
||||
|
||||
# Se connecter en SSH et lancer le build
|
||||
# Options SSH pour éviter "too many authentication failures"
|
||||
ssh -t -o IdentitiesOnly=yes -o PubkeyAuthentication=no -o PreferredAuthentications=password \
|
||||
"$MAC_USER@$MAC_MINI_IP" "cd /Users/pierre/dev/geosector/$DESTINATION_DIR && ./ios-build-mac.sh"
|
||||
|
||||
echo
|
||||
print_success "Build terminé sur le Mac mini"
|
||||
echo
|
||||
print_message "Prochaines étapes sur le Mac mini :"
|
||||
print_message "1. Xcode est maintenant ouvert"
|
||||
print_message "2. Vérifier Signing & Capabilities (Team: 6WT84NWCTC)"
|
||||
print_message "3. Product > Archive"
|
||||
print_message "4. Organizer > Distribute App > App Store Connect"
|
||||
else
|
||||
print_message "========================================="
|
||||
print_message " INSTRUCTIONS MANUELLES"
|
||||
print_message "========================================="
|
||||
echo
|
||||
print_message "Sur votre Mac mini, exécutez les commandes suivantes :"
|
||||
echo
|
||||
echo -e "${YELLOW}# Se connecter au Mac mini${NC}"
|
||||
echo "ssh $MAC_USER@$MAC_MINI_IP"
|
||||
echo
|
||||
echo -e "${YELLOW}# Aller dans le dossier du projet${NC}"
|
||||
echo "cd /Users/pierre/dev/geosector/$DESTINATION_DIR"
|
||||
echo
|
||||
echo -e "${YELLOW}# Lancer le build iOS${NC}"
|
||||
echo "./ios-build-mac.sh"
|
||||
echo
|
||||
print_message "========================================="
|
||||
echo
|
||||
print_message "Ou copiez-collez cette commande complète :"
|
||||
echo
|
||||
echo -e "${GREEN}ssh -t $MAC_USER@$MAC_MINI_IP \"cd /Users/pierre/dev/geosector/$DESTINATION_DIR && ./ios-build-mac.sh\"${NC}"
|
||||
fi
|
||||
|
||||
echo
|
||||
print_success "Script terminé !"
|
||||
Reference in New Issue
Block a user