# Ensure script is run with proper privileges
if [ "$EUID" -ne 0 ] && ! groups | grep -q '\bdocker\b'; then
  echo "Error: Please run this script with 'sudo' or as a user in the 'docker' group."
  exit 1
fi

echo "=================================================="
echo "          DOCKER FULL SYSTEM WIPE                 "
echo "=================================================="
echo ""

# 1. Record disk usage before cleanup
echo "---> Checking initial Docker disk space..."
BEFORE_SPACE=$(docker system df --format "{{.Type}}: {{.Size}} (Reclaimable: {{.Reclaimable}})")
echo "$BEFORE_SPACE"
echo ""

# 2. Stop all running containers
echo "---> Stopping all running containers..."
RUNNING_CONTAINERS=$(docker ps -q)
if [ -n "$RUNNING_CONTAINERS" ]; then
  docker stop $RUNNING_CONTAINERS
else
  echo "No active containers to stop."
fi
echo ""

# 3. Wipe everything and capture detailed output
echo "---> Removing all containers, images, volumes, networks, and build caches..."
echo "--------------------------------------------------"
WIPE_OUTPUT=$(docker system prune -a --volumes -f)
echo "$WIPE_OUTPUT"
echo "--------------------------------------------------"
echo ""

# 4. Summary Output
echo "=================================================="
echo "                DELETION SUMMARY                  "
echo "=================================================="

DELETED_CONTAINERS=$(echo "$WIPE_OUTPUT" | grep "Deleted Containers:" -A 100 | grep -E "^\w+" | grep -v "Deleted" || echo "None")
DELETED_IMAGES=$(echo "$WIPE_OUTPUT" | grep "Deleted Images:" -A 100 | grep -E "^(deleted|untagged):" | wc -l)
DELETED_VOLUMES=$(echo "$WIPE_OUTPUT" | grep "Deleted Volumes:" -A 100 | grep -E "^\w+" | grep -v "Deleted" | wc -l)
RECLAIMED_SPACE=$(echo "$WIPE_OUTPUT" | grep "Total reclaimed space:")

echo "• Images Removed      : $DELETED_IMAGES layer(s)"
echo "• Volumes Removed     : $DELETED_VOLUMES volume(s)"
echo "• $RECLAIMED_SPACE"
echo ""

echo "---> Final Docker Disk Status:"
docker system df
echo ""
echo "Done! Docker is completely clean."
