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

apps_destroy_cmd() {
  local desc="destroys an app"
  local cmd="apps:destroy"
  [[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
  [[ "$2" == "tls" ]] && dokku_log_fail "Unable to destroy tls directory"
  [[ "$3" == "force" ]] && export DOKKU_APPS_FORCE_DELETE=1
  local APP="$2"; local IMAGE_TAG=$(get_running_image_tag "$APP")
  verify_app_name "$APP"

  if [[ -z "$DOKKU_APPS_FORCE_DELETE" ]]; then
    dokku_log_warn "WARNING: Potentially Destructive Action"
    dokku_log_warn "This command will destroy $APP (including all add-ons)."
    dokku_log_warn "To proceed, type \"$APP\""
    echo ""

    read -rp "> " app_name
    if [[ "$app_name" != "$APP" ]]; then
      dokku_log_fail "Confirmation did not match $APP. Aborted."
    fi
  fi

  echo "Destroying $APP (including all add-ons)"

  plugn trigger pre-delete "$APP" "$IMAGE_TAG"
  local DOKKU_APP_CIDS=$(get_app_container_ids "$APP")
  local cid

  if [[ -n $DOKKU_APP_CIDS ]]; then
    for cid in $DOKKU_APP_CIDS; do
      docker stop "$cid" > /dev/null || true
      docker rm "$cid"  > /dev/null || true
    done
  fi

  plugn trigger post-delete "$APP" "$IMAGE_TAG"
}

apps_destroy_cmd "$@"
