#!/bin/bash

function removecontainer() {
  docker container ls --all -q -f name=^${PROJECT}_ >/tmp/reset.lst
  IDS=$(cat /tmp/reset.lst)
  if [[ ! -n ${IDS} ]]; then
    echo "No containers to be removed."
    return
  fi
  echo "Deleting containers ..."
  for CONTAINERID in $(cat /tmp/reset.lst); do
    docker rm -f $CONTAINERID
  done
  rm /tmp/reset.lst
}

function removenetwork() {
  ID=$(docker network ls -q -f name=${PROJECT}_default)
  if [[ ! -n ${ID} ]]; then
    echo "No network to be removed."
    return
  fi
  echo "Deleting network ..."
  docker network rm ${PROJECT}_default
}

function rebuildtraefik() {
  cd ${HOME}/.traefik || return
  if [[ -f "docker-compose.yml" ]]; then
    docker compose --project-name traefik up -d --remove-orphans
  fi
  if [[ "$NETWORKS" == "" ]]; then
    return
  fi
  docker network rm ${NETWORKS}
}

if [[ -n $1 ]]; then
  NETWORKS=""
  while [[ -n $1 ]]; do
    PROJECT=$1
    read -p "Are you sure you want to remove the project ${PROJECT} with all containers and network? Type YES to confirm: " CONFIRM
    if [[ "$CONFIRM" == YES ]]; then
      removecontainer
      removenetwork
    fi
    shift
  done
  rebuildtraefik
else
  echo "Please provide the project name you want to delete."
  exit
fi