#!/usr/bin/env bash
# Создаёт симлинк install.xml в system/ OpenCart внутри контейнера.
# OpenCart при «Обновить» (Расширения → Модификации) подхватывает файлы
# DIR_SYSTEM . '*.ocmod.xml' и применяет их своей логикой — так же, как на сервере.
#
# Использование:
#   ./scripts/apply_ocmod.sh
#
# Переменные (по умолчанию из docker-compose.yaml):
#   CONTAINER  — сервис/контейнер (по умолчанию web)
#   TARGET_DIR — каталог system в контейнере (по умолчанию /web/upload/system)
#   SOURCE     — путь к install.xml в контейнере (по умолчанию /module/oc_telegram_shop/ocmod/install.xml)
#
# После запуска: открой админку → Расширения → Модификации → нажми «Обновить».

set -euo pipefail

CONTAINER="${CONTAINER:-web}"
TARGET_DIR="${TARGET_DIR:-/web/upload/system}"
SOURCE="${SOURCE:-/module/oc_telegram_shop/install.xml}"
TARGET="$TARGET_DIR/telecart.ocmod.xml"

if ! docker compose exec "$CONTAINER" test -f "$SOURCE" 2>/dev/null; then
  echo "Ошибка: в контейнере $CONTAINER не найден $SOURCE" >&2
  echo "Проверь, что том ./module примонтирован в контейнер." >&2
  exit 1
fi

if ! docker compose exec "$CONTAINER" test -d "$TARGET_DIR" 2>/dev/null; then
  echo "Ошибка: в контейнере $CONTAINER не найден каталог $TARGET_DIR" >&2
  exit 1
fi

docker compose exec "$CONTAINER" bash -c "
  if [ -e '$TARGET' ]; then
    if [ -L '$TARGET' ]; then
      current=\$(readlink '$TARGET')
      if [ \"\$current\" = '$SOURCE' ]; then
        echo 'Симлинк уже указывает на модуль: $TARGET'
        exit 0
      fi
    fi
    rm -f '$TARGET'
  fi
  ln -sf '$SOURCE' '$TARGET'
  echo 'Симлинк создан в контейнере: $TARGET → $SOURCE'
"

echo ""
echo "Дальше: открой админку OpenCart → Расширения → Модификации → нажми «Обновить»."
echo "Модификация применится той же логикой, что и при установке на сервере."
