#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x

case "$1" in
  apps)
    echo "=== My Apps"
    find $DOKKU_ROOT -follow -maxdepth 1 -type d  \( ! -iname ".*" \)  -not -path $DOKKU_ROOT/tls | sed 's|^\./||g' | sed 's|'$DOKKU_ROOT'\/||' | tail -n +2 | sort
    ;;

  apps:create)
    [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
    [[ -d "$DOKKU_ROOT/$2" ]] && echo " !    Name is already taken" && exit 1
    APP="$2"

    mkdir -p "$DOKKU_ROOT/$APP"
    echo "Creating $APP... done"
    ;;

  apps:destroy)
    [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1
    [[ ! -d "$DOKKU_ROOT/$2" ]] && echo "App $2 does not exist" && exit 1
    [[ "$2" == "tls" ]] && echo "Unable to destroy tls directory" && exit 1
    APP="$2"; IMAGE="dokku/$APP";

    echo " !    WARNING: Potentially Destructive Action"
    echo " !    This command will destroy $APP (including all add-ons)."
    echo " !    To proceed, type \"$APP\""
    echo ""

    read -p "> " app_name
    if [[ "$app_name" != "$APP" ]]; then
      echo " !    Confirmation did not match $APP. Aborted."
      exit 1
    fi

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

    pluginhook pre-delete $APP
    if [[ -f "$DOKKU_ROOT/$APP/CONTAINER" ]]; then
      ID=$(< "$DOKKU_ROOT/$APP/CONTAINER")

      docker stop $ID > /dev/null || true
      docker rm $ID  > /dev/null || true
    fi

    docker images | grep $IMAGE | awk '{print $3}' | xargs docker rmi &> /dev/null &

    pluginhook post-delete $APP
    ;;

  help | apps:help)
    cat && cat<<EOF
    apps                                            List your apps
    apps:create <app>                               Create a new app
    apps:destroy <app>                              Permanently destroy an app
EOF
    ;;

  *)
    exit $DOKKU_NOT_IMPLEMENTED_EXIT
    ;;

esac
