#!/bin/bash

# Script de déploiement d'un fichier unique
# Version: 1.0
# Usage: ./deploy-file.sh <chemin_fichier> [pra]
#   <chemin_fichier> : Chemin relatif du fichier à déployer (ex: pub/res/js/jdevis.js)
#   pra (optionnel)  : Déploie vers PROD (IN4/pra-front), sinon déploie vers DEV (IN3/dva-front)

# Vérifier les paramètres
if [ -z "$1" ]; then
  echo "Usage: $0 <chemin_fichier> [pra]"
  echo "Exemple: $0 pub/res/js/jdevis.js"
  echo "Exemple: $0 pub/res/js/jdevis.js pra"
  exit 1
fi

FILE_PATH="$1"
DEPLOY_MODE=${2:-dev}

# Vérifier que le fichier existe localement
if [ ! -f "$FILE_PATH" ]; then
  echo "Erreur: Le fichier '$FILE_PATH' n'existe pas"
  exit 1
fi

# Détecter le mode de déploiement
if [ "$DEPLOY_MODE" = "pra" ]; then
  # Configuration PROD : IN4/pra-front
  TARGET_HOST=11.1.2.14
  TARGET_SSH_USER=root
  TARGET_SSH_PORT=22
  TARGET_SSH_KEY=/home/pierre/.ssh/id_rsa_mbpi
  TARGET_CT_PROJECT=default
  TARGET_CT_NAME=pra-front
  TARGET_DEPLOY_DIR=/var/www/cleo
  ENV_NAME="PRODUCTION"
else
  # Configuration DEV : IN3/dva-front
  TARGET_HOST=195.154.80.116
  TARGET_SSH_USER=root
  TARGET_SSH_PORT=22
  TARGET_SSH_KEY=/home/pierre/.ssh/id_rsa_mbpi
  TARGET_CT_PROJECT=default
  TARGET_CT_NAME=dva-front
  TARGET_DEPLOY_DIR=/var/www/cleo
  ENV_NAME="DÉVELOPPEMENT"
fi

# Propriétaire et groupe
OWNER=nobody
GROUP=nginx

# Couleurs
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

# Options SSH
TARGET_SSH_OPTS="-p $TARGET_SSH_PORT -i $TARGET_SSH_KEY"
TARGET_SCP_OPTS="-P $TARGET_SSH_PORT -i $TARGET_SSH_KEY"

echo -e "${GREEN}=== Déploiement fichier unique ===${NC}"
echo "Fichier: $FILE_PATH"
echo "Environnement: $ENV_NAME ($TARGET_CT_NAME)"
echo "Destination: $TARGET_DEPLOY_DIR/$FILE_PATH"
echo "=================================="

# 1. Copier le fichier vers le serveur hôte
echo -e "${YELLOW}1. Transfert du fichier vers le serveur...${NC}"
scp $TARGET_SCP_OPTS "$FILE_PATH" $TARGET_SSH_USER@$TARGET_HOST:/tmp/deploy-file.tmp

if [ $? -ne 0 ]; then
  echo -e "${RED}Erreur lors du transfert${NC}"
  exit 1
fi
echo -e "${GREEN}✓ Fichier transféré${NC}"

# 2. Déployer dans le conteneur
echo -e "${YELLOW}2. Déploiement dans le conteneur...${NC}"

# Déterminer les permissions selon le type de fichier
if [[ "$FILE_PATH" == ".env"* ]]; then
  FILE_PERMS=640
else
  FILE_PERMS=644
fi

TARGET_SCRIPT="
set -e
incus project switch $TARGET_CT_PROJECT

# Créer le répertoire parent si nécessaire
incus exec $TARGET_CT_NAME -- sh -c 'mkdir -p \$(dirname $TARGET_DEPLOY_DIR/$FILE_PATH)'

# Transférer le fichier dans le conteneur
incus file push /tmp/deploy-file.tmp $TARGET_CT_NAME$TARGET_DEPLOY_DIR/$FILE_PATH

# Appliquer les permissions
incus exec $TARGET_CT_NAME -- sh -c '
  chown $OWNER:$GROUP $TARGET_DEPLOY_DIR/$FILE_PATH && \
  chmod $FILE_PERMS $TARGET_DEPLOY_DIR/$FILE_PATH
'

# Nettoyer
rm -f /tmp/deploy-file.tmp

echo 'Déploiement terminé!'
"

ssh $TARGET_SSH_OPTS $TARGET_SSH_USER@$TARGET_HOST "$TARGET_SCRIPT"

if [ $? -ne 0 ]; then
  echo -e "${RED}Erreur lors du déploiement${NC}"
  ssh $TARGET_SSH_OPTS $TARGET_SSH_USER@$TARGET_HOST "rm -f /tmp/deploy-file.tmp"
  exit 1
fi

echo -e "${GREEN}✓ Fichier déployé avec succès${NC}"

echo ""
echo -e "${GREEN}===================================================${NC}"
echo -e "${GREEN}   Déploiement terminé avec succès !              ${NC}"
echo -e "${GREEN}===================================================${NC}"
if [ "$DEPLOY_MODE" = "pra" ]; then
  echo "Site: https://cleo.unikoffice.com"
  echo "Environnement: PRODUCTION (pra-front)"
else
  echo "Site: http://dcleo.unikoffice.com"
  echo "Environnement: DÉVELOPPEMENT (dva-front)"
fi
echo "Fichier: $TARGET_DEPLOY_DIR/$FILE_PATH"
echo ""
