#!/usr/bin/env bash
# Déploie un module PrestaShop sur la boutique de démo (rsync via SSH).
#
# Configuration : .secrets/.env (PS_DEMO_*)
#
# Usage :
#   ./scripts/deploy-prestashop-demo-module.sh
#   ./scripts/deploy-prestashop-demo-module.sh --dry-run
#   PS_DEMO_MODULE_NAME=amflags ./scripts/deploy-prestashop-demo-module.sh

set -euo pipefail

# shellcheck disable=SC1091
source "$(cd "$(dirname "$0")" && pwd)/prestashop-demo-env.inc.sh"

DRY_RUN=false
while [[ $# -gt 0 ]]; do
  case "$1" in
    -h | --help)
      sed -n '2,12p' "$0" | sed 's/^# \{0,1\}//'
      exit 0
      ;;
    -n | --dry-run) DRY_RUN=true; shift ;;
    *) echo "Option inconnue : $1" >&2; exit 1 ;;
  esac
done

KEY_FILE="$(resolve_ps_demo_ssh_key)"
chmod 600 "$KEY_FILE" 2>/dev/null || true

LOCAL_MODULE="${PS_DEMO_MODULE_PATH%/}"
REMOTE_MODULE="${PS_DEMO_PATH%/}/modules/${PS_DEMO_MODULE_NAME}"

[[ -d "$LOCAL_MODULE" ]] || {
  echo "Module local introuvable : $LOCAL_MODULE" >&2
  exit 1
}

RSYNC_OPTS=(-avz)
[[ "$DRY_RUN" == true ]] && RSYNC_OPTS+=(-n)

export RSYNC_RSH="ssh -4 -i ${KEY_FILE} -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new -p ${PS_DEMO_PORT} ${PS_DEMO_SSH_EXTRA_OPTS}"
DEST="${PS_DEMO_USER}@${PS_DEMO_HOST}:${REMOTE_MODULE}/"

echo "Déploiement module → ${DEST}"
echo "  Source : ${LOCAL_MODULE}/"
rsync "${RSYNC_OPTS[@]}" \
  --exclude '.DS_Store' \
  --exclude '__MACOSX/' \
  --exclude '.git/' \
  --exclude '.gitignore' \
  --exclude 'config_fr.xml' \
  --exclude '*.csv' \
  "${LOCAL_MODULE}/" "$DEST"

if [[ "$DRY_RUN" != true ]]; then
  ssh -4 -i "$KEY_FILE" -o IdentitiesOnly=yes -p "$PS_DEMO_PORT" $PS_DEMO_SSH_EXTRA_OPTS \
    "${PS_DEMO_USER}@${PS_DEMO_HOST}" \
    "find '${REMOTE_MODULE}' -type d -exec chmod 755 {} +; find '${REMOTE_MODULE}' -type f -exec chmod 644 {} +"
fi

echo "Terminé."
echo "Front : ${PS_DEMO_FO_URL:-}"
echo "Back-office : ${PS_DEMO_BO_URL:-}"
echo "Installez ou mettez à jour le module depuis Modules > Gestionnaire de modules."
