#!/usr/bin/env bash
set -euo pipefail

########################################
# KONFIG (din opsætning)
########################################
MAGENTO_PROD_ROOT="/home/imuser/public_html/sengetrolden.dk"
MAGENTO_TEST_ROOT="/home/imuser/public_html/test.sengetrolden.dk"

DB_HOST="dbinstance-1.csuenncepojt.eu-north-1.rds.amazonaws.com"
DB_ADMIN_USER="admin"
DB_ADMIN_PASS='Hagbard#11'

DB_PROD="sengetrolden26_db"
DB_TEST="test_sengetrolden26_db"

GRANT_USER="sengetrolden26"
GRANT_HOST="172.31.36.210"   # stram evt. til specifik host senere

PROD_URL="https://sengetrolden.dk"
TEST_URL="https://test.sengetrolden.dk"

PREFIX="sengtest"
OWNER="imuser:imuser"

REDIS0="13"    #Session
REDIS1="14"    #Cache DB	
REDIS2="15"    #Page_Cache DB
########################################
# HELPERS
########################################
log() { echo "[$(date '+%F %T')] $*"; }

cleanup_on_error() {
  log "FEJL opstod. Husk at genetablere drift (cron + maintenance off)..."
  if [[ -x "${MAGENTO_PROD_ROOT}/bin/magento" ]]; then
    cd "$MAGENTO_PROD_ROOT" || true
  fi
  if [[ -x "${MAGENTO_TEST_ROOT}/bin/magento" ]]; then
    cd "$MAGENTO_TEST_ROOT" || true
  fi
}
trap cleanup_on_error ERR

########################################
# SANITY CHECKS
########################################
if [[ ! -x "${MAGENTO_PROD_ROOT}/bin/magento" ]]; then
  echo "FINDER IKKE bin/magento i PROD: ${MAGENTO_PROD_ROOT}"
  exit 1
fi

if [[ ! -d "${MAGENTO_TEST_ROOT}" ]]; then
  echo "FINDER IKKE TEST-ROOT: ${MAGENTO_TEST_ROOT}"
  exit 1
fi

########################################
# FILESYNC: prod -> test (inden triggers regenereres)
########################################
log "Synkroniserer filer fra PROD -> TEST (nye/ændrede). Undtager app/etc/env.php + var/cache + var/page_cache..."

# Vi kopierer kun nye/ændrede filer (ingen delete). Bevarer test env.php.
rsync -av --update \
  --delete \
  --itemize-changes \
  --exclude '/app/etc/env.php' \
  --exclude '/var/cache/' \
  --exclude '/var/page_cache/' \
  "${MAGENTO_PROD_ROOT}/" "${MAGENTO_TEST_ROOT}/"


########################################
# ejerskab
########################################
log "Skifter ejerskab på relevante filer"

# 1) Ownership (så php-fpm kan skrive som nordisk)
chown -R "$OWNER" "$MAGENTO_TEST_ROOT"

# 2) Baseline perms (sikrer Apache traversal + .htaccess læsbar)
find "$MAGENTO_TEST_ROOT" -type d -exec chmod 755 {} \;
find "$MAGENTO_TEST_ROOT" -type f -exec chmod 644 {} \;

# 3) Magento writable dirs (skal kunne skrives til af web/PHP)
chmod -R 775 "$MAGENTO_TEST_ROOT/var" \
  "$MAGENTO_TEST_ROOT/generated" \
  "$MAGENTO_TEST_ROOT/pub/static" \
  "$MAGENTO_TEST_ROOT/pub/media" || true

# 4) Sørg for entrypoints er eksekverbare (CLI)
chmod 755 "$MAGENTO_TEST_ROOT/bin/magento" 2>/dev/null || true
chmod 755 "$MAGENTO_TEST_ROOT/bin/console" 2>/dev/null || true

# 5) .htaccess skal kunne læses
chmod 644 "$MAGENTO_TEST_ROOT/.htaccess" 2>/dev/null || true
chmod 644 "$MAGENTO_TEST_ROOT/pub/.htaccess" 2>/dev/null || true

########################################
# regenerér triggers via setup:upgrade + reindex
########################################
if [[ ! -x "${MAGENTO_TEST_ROOT}/bin/magento" ]]; then
  log "ADVARSEL: Kan ikke finde ${MAGENTO_TEST_ROOT}/bin/magento. Kan ikke regenerere triggers automatisk."
  log "Tjek at test-installationen er komplet."
  exit 1
else
  cd "$MAGENTO_TEST_ROOT"

  log "Kører setup:upgrade i TEST (genskaber manglende triggers/_cl setup)..."
  php -d memory_limit=2G -d opcache.enable_cli=0 bin/magento setup:upgrade

  log "Kompilerer setup"
  php -d memory_limit=2G -d opcache.enable_cli=0 bin/magento setup:di:compile
  log "Genererer statisk indhold"
  php -d memory_limit=2G -d opcache.enable_cli=0 bin/magento setup:static-content:deploy -f da_DK en_US
  log "Tømmer cache..."
  php -d memory_limit=2G -d opcache.enable_cli=0 bin/magento cache:flush

  log "Reindex i TEST (sikrer konsistens efter trigger-tab)..."
  php -d memory_limit=2G -d opcache.enable_cli=0 bin/magento indexer:reindex

  log "Cache flush i TEST..."
  bin/magento cache:flush

########################################
# Change Ownership : Ret ejerskab til nordisk:nordisk på alle filer
########################################
  chown -R "$OWNER" "$MAGENTO_TEST_ROOT"

########################################
# SLet logfiler
########################################
  rm -f "$MAGENTO_TEST_ROOT"/var/log/*.log

########################################
# Clean redis
########################################
  
  redis-cli -h 127.0.0.1 -p 6379 -n "$REDIS0" FLUSHDB
  redis-cli -h 127.0.0.1 -p 6379 -n "$REDIS1" FLUSHDB
  redis-cli -h 127.0.0.1 -p 6379 -n "$REDIS2" FLUSHDB
########################################
# Ændre i tekstfiler 
########################################
  sed -i 's|ROOT="/home/imuser/public_html/sengetrolden.dk"|ROOT="/home/imuser/public_html/test.sengetrolden.dk"|' /home/imuser/public_html/test.sengetrolden.dk/gitpull.sh


########################################
fi

trap - ERR
log "Færdig ✅"

