- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD) * DEV: Clés TEST Pierre (mode test) * REC: Clés TEST Client (mode test) * PROD: Clés LIVE Client (mode live) - Ajout de la gestion des bases de données immeubles/bâtiments * Configuration buildings_database pour DEV/REC/PROD * Service BuildingService pour enrichissement des adresses - Optimisations pages et améliorations ergonomie - Mises à jour des dépendances Composer - Nettoyage des fichiers obsolètes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
183 lines
6.9 KiB
Bash
183 lines
6.9 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Script de patch pour adapter migrate_from_backup.php et migrate_batch.sh
|
|
# pour fonctionner avec --env=rca|pra et source=geosector
|
|
#
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PHP_SCRIPT="$SCRIPT_DIR/php/migrate_from_backup.php"
|
|
BATCH_SCRIPT="$SCRIPT_DIR/migrate_batch.sh"
|
|
|
|
echo "=== Patching migration scripts ==="
|
|
echo ""
|
|
|
|
# Backup des fichiers originaux
|
|
echo "Creating backups..."
|
|
cp "$PHP_SCRIPT" "$PHP_SCRIPT.backup"
|
|
cp "$BATCH_SCRIPT" "$BATCH_SCRIPT.backup"
|
|
echo "✓ Backups created"
|
|
echo ""
|
|
|
|
# ============================================================
|
|
# PATCH 1: migrate_from_backup.php - Configuration multi-env
|
|
# ============================================================
|
|
|
|
echo "Patching migrate_from_backup.php..."
|
|
|
|
# Étape 1: Remplacer les constantes DB par configuration multi-env
|
|
sed -i '31,50s/.*/ \/\/ REPLACED BY PATCH - see below/' "$PHP_SCRIPT"
|
|
|
|
# Insérer la nouvelle configuration après la ligne 38
|
|
sed -i '38a\
|
|
private $env;\
|
|
\
|
|
\/\/ Configuration multi-environnement\
|
|
private const ENVIRONMENTS = [\
|
|
'\''rca'\'' => [\
|
|
'\''host'\'' => '\''13.23.33.3'\'', \/\/ maria3 sur IN3\
|
|
'\''port'\'' => 3306,\
|
|
'\''user'\'' => '\''rca_geo_user'\'',\
|
|
'\''pass'\'' => '\''UPf3C0cQ805LypyM71iW'\'',\
|
|
'\''target_db'\'' => '\''rca_geo'\'',\
|
|
'\''source_db'\'' => '\''geosector'\'' \/\/ Base synchronisée par PM7\
|
|
],\
|
|
'\''pra'\'' => [\
|
|
'\''host'\'' => '\''13.23.33.4'\'', \/\/ maria4 sur IN4\
|
|
'\''port'\'' => 3306,\
|
|
'\''user'\'' => '\''pra_geo_user'\'',\
|
|
'\''pass'\'' => '\''d2jAAGGWi8fxFrWgXjOA'\'',\
|
|
'\''target_db'\'' => '\''pra_geo'\'',\
|
|
'\''source_db'\'' => '\''geosector'\'' \/\/ Base synchronisée par PM7\
|
|
]\
|
|
];' "$PHP_SCRIPT"
|
|
|
|
# Étape 2: Modifier le constructeur pour accepter $env
|
|
sed -i 's/public function __construct($sourceDbName, $targetDbName, $mode/public function __construct($env, $mode/' "$PHP_SCRIPT"
|
|
|
|
# Étape 3: Adapter le corps du constructeur
|
|
sed -i '/public function __construct/,/^ }$/{
|
|
s/\$this->sourceDbName = \$sourceDbName;/\$this->env = \$env;\n if (!isset(self::ENVIRONMENTS[\$env])) {\n throw new Exception("Invalid environment: \$env. Use '\''rca'\'' or '\''pra'\''");\n }\n \$config = self::ENVIRONMENTS[\$env];\n \$this->sourceDbName = \$config['\''source_db'\''];\n \$this->targetDbName = \$config['\''target_db'\''];/
|
|
s/\$this->targetDbName = \$targetDbName;//
|
|
s/Source: {\$sourceDbName}/Environment: \$env/
|
|
s/Cible: {\$targetDbName}/Source: {\$this->sourceDbName} → Target: {\$this->targetDbName}/
|
|
}' "$PHP_SCRIPT"
|
|
|
|
# Étape 4: Modifier connect() pour utiliser la config de l'env
|
|
sed -i '/public function connect()/,/^ }$/{
|
|
s/self::DB_HOST/self::ENVIRONMENTS[\$this->env]['\''host'\'']/g
|
|
s/self::DB_PORT/self::ENVIRONMENTS[\$this->env]['\''port'\'']/g
|
|
s/self::DB_USER_ROOT/self::ENVIRONMENTS[\$this->env]['\''user'\'']/g
|
|
s/self::DB_PASS_ROOT/self::ENVIRONMENTS[\$this->env]['\''pass'\'']/g
|
|
s/self::DB_USER/self::ENVIRONMENTS[\$this->env]['\''user'\'']/g
|
|
s/self::DB_PASS/self::ENVIRONMENTS[\$this->env]['\''pass'\'']/g
|
|
}' "$PHP_SCRIPT"
|
|
|
|
# Étape 5: Modifier parseArguments() - supprimer source-db et target-db, ajouter env
|
|
sed -i '/function parseArguments/,/^}$/{
|
|
s/'\''source-db'\'' => null,/'\''env'\'' => '\''rca'\'',/
|
|
s/'\''target-db'\'' => '\''pra_geo'\'',//
|
|
}' "$PHP_SCRIPT"
|
|
|
|
# Étape 6: Modifier showHelp()
|
|
sed -i '/function showHelp/,/^}$/{
|
|
s/--source-db=NAME.*\[REQUIS\]/--env=ENV Environment: '\''rca'\'' (recette) ou '\''pra'\'' (production) [défaut: rca]/
|
|
s/--target-db=NAME.*/ (supprimé - déduit automatiquement de --env)/
|
|
s/--source-db=geosector_20251007/--env=rca/g
|
|
s/--target-db=pra_geo//g
|
|
s/--target-db=rca_geo//g
|
|
}' "$PHP_SCRIPT"
|
|
|
|
# Étape 7: Modifier la validation des arguments
|
|
sed -i '/Validation des arguments/,/exit(1);/{
|
|
s/if (!$args\['\''source-db'\''\])/if (!isset(self::ENVIRONMENTS[\$args['\''env'\'']]))/
|
|
s/--source-db est requis/--env doit être '\''rca'\'' ou '\''pra'\''/
|
|
}' "$PHP_SCRIPT"
|
|
|
|
# Étape 8: Modifier l'instanciation de BackupMigration
|
|
sed -i '/new BackupMigration/,/);/{
|
|
s/\$args\['\''source-db'\''\],/\$args['\''env'\''],/
|
|
s/\$args\['\''target-db'\''\],//
|
|
}' "$PHP_SCRIPT"
|
|
|
|
echo "✓ migrate_from_backup.php patched"
|
|
echo ""
|
|
|
|
# ============================================================
|
|
# PATCH 2: migrate_batch.sh - Adapter pour env rca/pra
|
|
# ============================================================
|
|
|
|
echo "Patching migrate_batch.sh..."
|
|
|
|
# Étape 1: Détecter l'environnement automatiquement ou via paramètre
|
|
sed -i '/# Configuration/a\
|
|
\
|
|
# Détection automatique de l'\''environnement\
|
|
if [ -f "/etc/hostname" ]; then\
|
|
CONTAINER_NAME=$(cat /etc/hostname)\
|
|
case $CONTAINER_NAME in\
|
|
rca-geo)\
|
|
ENV="rca"\
|
|
;;\
|
|
pra-geo)\
|
|
ENV="pra"\
|
|
;;\
|
|
*)\
|
|
ENV="rca" # Défaut\
|
|
;;\
|
|
esac\
|
|
else\
|
|
ENV="rca" # Défaut\
|
|
fi' "$BATCH_SCRIPT"
|
|
|
|
# Étape 2: Remplacer SOURCE_DB et TARGET_DB
|
|
sed -i 's/SOURCE_DB="geosector_20251013_13"/# SOURCE_DB removed - always "geosector" (deduced from --env)/' "$BATCH_SCRIPT"
|
|
sed -i 's/TARGET_DB="pra_geo"/# TARGET_DB removed - deduced from --env/' "$BATCH_SCRIPT"
|
|
|
|
# Étape 3: Ajouter option --env dans le parsing
|
|
sed -i '/--interactive|-i)/i\
|
|
--env)\
|
|
ENV="$2"\
|
|
shift 2\
|
|
;;' "$BATCH_SCRIPT"
|
|
|
|
# Étape 4: Modifier les appels à migrate_from_backup.php - ligne 200
|
|
sed -i '200,210s/--source-db="\$SOURCE_DB"/--env="$ENV"/' "$BATCH_SCRIPT"
|
|
sed -i '200,210s/--target-db="\$TARGET_DB"//' "$BATCH_SCRIPT"
|
|
|
|
# Étape 5: Modifier les appels dans la boucle - ligne 374
|
|
sed -i '374,380s/--source-db="\$SOURCE_DB"/--env="$ENV"/' "$BATCH_SCRIPT"
|
|
sed -i '374,380s/--target-db="\$TARGET_DB"//' "$BATCH_SCRIPT"
|
|
|
|
# Étape 6: Mettre à jour les messages de log
|
|
sed -i 's/📁 Source: \$SOURCE_DB/🌍 Environment: $ENV/' "$BATCH_SCRIPT"
|
|
sed -i 's/📁 Cible: \$TARGET_DB/📁 Source: geosector → Target: (déduit de $ENV)/' "$BATCH_SCRIPT"
|
|
|
|
echo "✓ migrate_batch.sh patched"
|
|
echo ""
|
|
|
|
# ============================================================
|
|
# Résumé
|
|
# ============================================================
|
|
|
|
echo "=== Patch completed ==="
|
|
echo ""
|
|
echo "Backups saved:"
|
|
echo " - $PHP_SCRIPT.backup"
|
|
echo " - $BATCH_SCRIPT.backup"
|
|
echo ""
|
|
echo "New usage:"
|
|
echo " # Sur rca-geo (détection auto)"
|
|
echo " ./migrate_batch.sh"
|
|
echo ""
|
|
echo " # Sur pra-geo avec --env explicite"
|
|
echo " ./migrate_batch.sh --env=pra"
|
|
echo ""
|
|
echo " # Migration d'une entité spécifique"
|
|
echo " php php/migrate_from_backup.php --env=rca --mode=entity --entity-id=45"
|
|
echo ""
|
|
echo "To restore backups:"
|
|
echo " cp $PHP_SCRIPT.backup $PHP_SCRIPT"
|
|
echo " cp $BATCH_SCRIPT.backup $BATCH_SCRIPT"
|