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

dokku_ls_cmd() {
  declare desc="lists installed apps with status"
  local cmd="ls"
  local installed_apps=$(dokku_apps)
  local dokku_app

  dokku_col_log_info1_quiet "App Name" "Container Type" "Container Id" "Status"

  for dokku_app in $installed_apps; do
    local APP=$(basename "$dokku_app")
    local DOKKU_APP_CIDS=$(get_app_container_ids "$APP")
    local DOCKER_RUNNING_CONTAINERS=$(docker ps -q --no-trunc)
    if [[ -n $DOKKU_APP_CIDS ]]; then
      local DOKKU_APP_CID
      for DOKKU_APP_CID in $DOKKU_APP_CIDS; do
        local DOKKU_APP_CONTAINER_STATUS="stopped"
        [[ $DOCKER_RUNNING_CONTAINERS =~ $DOKKU_APP_CID ]] && local DOKKU_APP_CONTAINER_STATUS="running"
        local DOKKU_APP_CONTAINER_TYPE=$(grep -l "$DOKKU_APP_CID" "$DOKKU_ROOT/$APP"/CONTAINER.* | awk -F '/' '{ print $5 }' | awk -F '.' '{ print $2 }')
        dokku_col_log_msg "$APP" "$DOKKU_APP_CONTAINER_TYPE" "${DOKKU_APP_CID:0:12}" "$DOKKU_APP_CONTAINER_STATUS"
      done
    else
      dokku_col_log_msg "$APP" "NOT_DEPLOYED" "NOT_DEPLOYED" "NOT_DEPLOYED"
    fi
  done
}

dokku_ls_cmd "$@"
