#!/bin/bash

## Description: gambio helper scripts
## Usage: gambio [flags] [args]
## ProjectTypes: php

# Funktion, die aufgerufen wird, wenn Strg+C gedrückt wird
cleanup()
{
  case $? in
    0)
       echo "Das Skript wurde erfolgreich beendet."
       ;;
#             1)
#                 echo "Ein allgemeiner Fehler ist aufgetreten."
#                 ;;
#             255)
#                 echo "Das Skript wurde mit Fehler 255 (unbekannter schwerer Fehler) beendet."
#                 ;;
    *)
                 echo "Das Skript wurde mit Exit-Code $? beendet."
      echo "Beende das Teilen und konfiguriere auf lokalen Betrieb."
      ddev gambio unshare
      ;;
    esac

    exit 0
}

# "trap" fängt EXIT ab und ruft die Funktion "cleanup" auf
trap cleanup EXIT

set_shop_domain()
{
  if [ "$1" = ngrok ] ; then
    echo "${DDEV_APPROOT}"
    # Lese die ngrok_args aus der .ddev/config.yaml
    NGROK_ARGS=$(grep 'ngrok_args' "${DDEV_APPROOT}"/.ddev/config.yaml)
    # Extrahiere das Argument --domain aus ngrok_args
    SHOP_URL="https://$(echo "$NGROK_ARGS" | grep -oP '(?<=--domain )\S+')"
  elif [ "$1" = devtn ] ; then
    echo "${DDEV_APPROOT}"
    SHOP_URL="https://share.hq.lenk.gmbh"
  elif [ "$1" = share ] ; then
    echo "${DDEV_APPROOT}"
    SHOP_URL="https://${DDEV_SITENAME,,}.d.lenk.gmbh"
  elif [ "$1" = expose ] ; then
    echo "${DDEV_APPROOT}"
    SHOP_URL="https://${DDEV_SITENAME,,}.dev.lenk.gmbh"
  elif [ "$1" = unshare ] ; then
    SHOP_URL=${DDEV_PRIMARY_URL}
  fi

  echo "Konfiguriere den Shop auf folgende Domain: $SHOP_URL"

  # Liste der Konfigurationsdateien
  files="includes/configure.php admin/includes/configure.php"

  # Durchlaufe jede Datei in dem Array
  for file_path in $files
  do
    # sed Befehle zum Setzen der Shop-Domain
    sed -i "s|define('HTTP_SERVER', '.*')|define('HTTP_SERVER', '${SHOP_URL}')|g" "${DDEV_APPROOT}/$file_path"
    sed -i "s|define('HTTPS_SERVER', '.*')|define('HTTPS_SERVER', '${SHOP_URL}')|g" "${DDEV_APPROOT}/$file_path"

    sed -i "s|define('HTTP_CATALOG_SERVER', '.*')|define('HTTP_CATALOG_SERVER', '${SHOP_URL}')|g" "${DDEV_APPROOT}/$file_path"
    sed -i "s|define('HTTPS_CATALOG_SERVER', '.*')|define('HTTPS_CATALOG_SERVER', '${SHOP_URL}')|g" "${DDEV_APPROOT}/$file_path"

    if [ "$1" = expose ] ; then
      sed -i "s|define('HTTP_SERVER', '.*')|define('HTTP_SERVER', '')|g" "${DDEV_APPROOT}/$file_path"
      sed -i "s|define('ENABLE_SSL', true)|define('ENABLE_SSL', false)|g" "${DDEV_APPROOT}/$file_path"

    elif [ "$1" = unshare ] ; then
      sed -i "s|define('ENABLE_SSL', false)|define('ENABLE_SSL', true)|g" "${DDEV_APPROOT}/$file_path"
    fi

  done
}

clear_caches()
{
  echo "Leere die Caches"

  if [ "$(ls -A "${DDEV_APPROOT}"/cache)" ]; then
      rm -r "${DDEV_APPROOT}"/cache/*
  else
      echo "Verzeichnis 'cache' bereits geleert..."
  fi

  if [ "$(ls -A "${DDEV_APPROOT}"/public/theme)" ]; then
      rm -r "${DDEV_APPROOT}"/public/theme/*
  else
      echo "Verzeichnis 'public/theme' bereits geleert..."
  fi
}

case $1 in
  share|unshare|devtn|ngrok|expose)
    set_shop_domain "$@"
    clear_caches "$@"

    if [ "$1" = ngrok ] ; then
      echo "teile Shop via ngrok..."
      ddev share
    elif [ "$1" = devtn ] ; then
      echo "teile Shop via share.hq.lenk.gmbh..."
      ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=4 remotetunnel@monitor.hq.lenk.gmbh -p 2222 -R 65318:localhost:"$DDEV_HOST_WEBSERVER_PORT"
    elif [ "$1" = share ] ; then
      echo "teile Shop via dev.lenk.gmbh..."
      ssh -p 2222 -R "$DDEV_SITENAME":80:localhost:"$DDEV_HOST_WEBSERVER_PORT" dev.lenk.gmbh
    elif [ "$1" = expose ] ; then

      echo "teile Shop via dev.lenk.gmbh..."

      expose share ${DDEV_HOSTNAME} --subdomain=${DDEV_SITENAME,,}


      # EXPOSE_BIN="~/.composer/vendor/bin/expose"
      # ddev composer global require exposedev/expose

      # ddev exec mkdir -p ~/.expose
      # ddev exec ln -sf /mnt/ddev_config/expose_config.php ~/.expose/config.php

      # ddev exec "${EXPOSE_BIN}" share ${DDEV_PRIMARY_URL} --subdomain=${DDEV_SITENAME,,}
      # ddev exec "${EXPOSE_BIN}" share http://localhost:${DDEV_HOST_WEBSERVER_PORT} --subdomain=${DDEV_SITENAME,,}
      # ddev exec "${EXPOSE_BIN}" share http://localhost:${DDEV_HOST_HTTP_PORT} --subdomain=${DDEV_SITENAME,,}
      # ddev exec "${EXPOSE_BIN}" share ${DDEV_HOSTNAME} --subdomain=${DDEV_SITENAME,,}
      # ddev exec "${EXPOSE_BIN}" share ${VIRTUAL_HOST} --help
    fi
    ;;
  *)
    echo "Invalid argument: $1"
    ;;
esac
