#!/bin/bash
set -e

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. $DIR/../functions/internal/utils

# Process command flags
NAMESPACE_FLAG=""
NAMESPACE=""
NO_DETAIL=false
SECRET_DATA=false
ALL_NAMESPACES=""

while [[ $# -gt 0 ]]
do
  key="$1"
  shift
  case $key in
  -n)
    NAMESPACE=$1; shift
    NAMESPACE_FLAG="-n $NAMESPACE"
    ;;
  -d)
    OUTPUT_DIR=$1; shift
    ;;
  -s|--secret-data)
    SECRET_DATA=$1; shift
    ;;
  -a)
    ALL_NAMESPACES="--all-namespaces"
    ;;
  esac
done

if [[ "$NAMESPACE" != "" ]]; then
  NAMESPACE_DIR=${OUTPUT_DIR}/${NAMESPACE}
else
  NAMESPACE_DIR=${OUTPUT_DIR}/_cluster
fi

mkdir -p $NAMESPACE_DIR


SECRET_DIR=${NAMESPACE_DIR}/secrets
mkdir -p $SECRET_DIR

if [[ "$SECRET_DATA" == "true" ]]
then echo "- ${COLOR_BLUE}secrets${TEXT_RESET} (with secret data)"
else echo "- ${COLOR_BLUE}secrets${TEXT_RESET} (without secret data)"
fi

# Generate Summary
# -----------------------------------------------------------------------------
oc ${NAMESPACE_FLAG} get secrets ${ALL_NAMESPACES} -o wide &> ${NAMESPACE_DIR}/secrets.txt


# Generate Detailed Report
# -----------------------------------------------------------------------------
if [[ -z "$ALL_NAMESPACES" ]]; then
  SECRETS=$(oc ${NAMESPACE_FLAG} get secrets -o name)
  for SECRET in ${SECRETS[@]}
  do
    # echo "    - Collecting $SECRET"
    SECRET_NAME=$(echo ${SECRET} | cut -d '/' -f 2)

    if [[ "$SECRET_DATA" == "true" ]]; then
      oc ${NAMESPACE_FLAG} get ${SECRET} -o yaml &> ${SECRET_DIR}/${SECRET_NAME}.yaml
    else
      oc ${NAMESPACE_FLAG} describe ${SECRET} &> ${SECRET_DIR}/${SECRET_NAME}.yaml
    fi

  done
else
  if [[ "$SECRET_DATA" == "true" ]]; then
    oc get secrets ${ALL_NAMESPACES} -o yaml &> ${SECRET_DIR}/all-namespaces.yaml
  else
    oc describe secrets ${ALL_NAMESPACES} &> ${SECRET_DIR}/all-namespaces.yaml
  fi
fi
