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

proxy_ports_remove_cmd() {
  declare desc="remove specific proxy port mappings from an app"
  local cmd="proxy:ports-remove"
  local APP="$2"; verify_app_name "$APP"
  local PROXY_PORT_MAP="$(config_get "$APP" DOKKU_PROXY_PORT_MAP || true)"
  shift 2

  local INPUT_PORTS="$*"
  if [[ -n "$INPUT_PORTS" ]]; then
    local port
    for port in $INPUT_PORTS; do
      PROXY_PORT_MAP="$(sed -r "s/[[:alnum:]]+:$port:[[:alnum:]]+//g" <<< "$PROXY_PORT_MAP")"
    done
    PROXY_PORT_MAP="$(echo "$PROXY_PORT_MAP" | xargs)"
    PROXY_PORT_MAP="$(merge_dedupe_list "$PROXY_PORT_MAP" " ")"
    if [[ -n "$PROXY_PORT_MAP" ]]; then
      config_set --no-restart "$APP" DOKKU_PROXY_PORT_MAP="$PROXY_PORT_MAP"
    else
      config_unset --no-restart "$APP" DOKKU_PROXY_PORT_MAP
    fi
    plugn trigger post-proxy-ports-update "$APP" "remove"
  else
    dokku_log_warn "No port mapping specified. Please supply a valid configured host port"
    list_app_proxy_ports "$APP"
    dokku_log_fail "exiting..."
  fi
}

proxy_ports_remove_cmd "$@"
