#!/usr/bin/env bash
set -e
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

KASM_VERSION="1.18.0"
KASM_INSTALL_BASE="/opt/kasm/${KASM_VERSION}"

FLAG="default"
RECREATE_SVCS=()
KASM_SERVICE=""

# Help message
usage() {
  echo ""
  echo "Usage: sudo $(basename "$0") [service] [--soft | --recreate=svc1,svc2 | --down]"
  echo ""
  echo "  service            (optional) Stop/remove a specific service"
  echo "  --soft             Stop containers without removing them"
  echo "  --recreate=db,...  Stop and remove specific services"
  echo "  --down             Stop and remove all containers and networks defined in the docker compose file"
  echo "  --help             Show this help message"
  echo ""
  exit 0
}

for arg in "$@"; do
  case "$arg" in
    --soft)
      FLAG="soft"
      ;;
    --recreate=*)
      FLAG="recreate"
      IFS=',' read -ra RECREATE_SVCS <<< "${arg#*=}"
      ;;
    --down)
      FLAG="down"
      ;;
    --help)
      usage
      ;;
    --*)
      echo "Unknown flag: $arg"
      usage
      ;;
    *)
      [[ -z "$KASM_SERVICE" ]] && KASM_SERVICE="$arg"
      ;;
  esac
done

pushd "${KASM_INSTALL_BASE}/docker" > /dev/null

echo "Stopping Kasm Services"
export KASM_UID=$(id kasm -u)
export KASM_GID=$(id kasm -g)

if [[ $FLAG == "soft" ]]; then
  docker compose stop ${KASM_SERVICE:-}
elif [[ $FLAG == "recreate" ]]; then
  docker compose stop ${KASM_SERVICE:-}
  if ((${#RECREATE_SVCS[@]})); then
    docker compose rm -f "${RECREATE_SVCS[@]}"
  else
    docker compose rm -f ${KASM_SERVICE:-}
  fi
elif [[ $FLAG == "down" ]]; then     
  docker compose down
else
  docker compose stop ${KASM_SERVICE:-}
  docker compose rm -f ${KASM_SERVICE:-}
fi

popd > /dev/null
