#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"

trigger-nginx-vhosts-pre-enable-vhost() {
  declare desc="unset port prior to vhosts being enabled"
  declare trigger="pre-enable-vhost"
  declare APP="$1"

  if [[ "$(plugn trigger proxy-type "$APP")" != "nginx" ]]; then
    return
  fi

  # clear stored proxy ports so they can be recomputed for the enabled state
  local PROXY_PORT=$(plugn trigger ports-get-property "$APP" "proxy-port")
  local PROXY_SSL_PORT=$(plugn trigger ports-get-property "$APP" "proxy-ssl-port")

  if [[ -n "$PROXY_PORT" ]]; then
    fn-plugin-property-delete "proxy" "$APP" "proxy-port"
  fi
  if [[ -n "$PROXY_SSL_PORT" ]]; then
    fn-plugin-property-delete "proxy" "$APP" "proxy-ssl-port"
  fi

  # clear auto-detected port maps so they get recomputed for vhost mode
  fn-plugin-property-delete "ports" "$APP" "map-detected"

  # clear ports if there is a mapping starting with http:80 or https:443
  local PORT_MAPS=$(plugn trigger ports-get "$APP")
  for PORT_MAP in $PORT_MAPS; do
    if [[ "$PORT_MAP" == "http:80:"* ]] || [[ "$PORT_MAP" == "https:443:"* ]]; then
      plugn trigger ports-clear "$APP"
      break
    fi
  done
}

trigger-nginx-vhosts-pre-enable-vhost "$@"
