#!/usr/bin/env bash set -euo pipefail CLI="${1:-podman}" REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)" PROJECT="$(printf '%s' "${COMPOSE_PROJECT_NAME:-$(basename "$REPO_ROOT")}" | tr '[:upper:]' '[:lower:]' | tr -cd 'a-z0-9_-')" KEEP='go-cache|go-mod-cache|bobbin-cargo|bobbin-target|(web|camo|avatar)-node-modules|web-svelte-kit|(camo|avatar)-wrangler|ncps-data|spindle-cache' cd "$REPO_ROOT" printf '==> stopping %s containers with %s compose down --remove-orphans\n' "$PROJECT" "$CLI" >&2 "$CLI" compose down --remove-orphans printf '==> removing %s volumes, keeping caches\n' "$PROJECT" >&2 all="$("$CLI" volume ls -q | grep -E "^${PROJECT}_" || true)" drop="$(printf '%s\n' "$all" | grep -vE "^${PROJECT}_(${KEEP})$" || true)" keep="$(printf '%s\n' "$all" | grep -E "^${PROJECT}_(${KEEP})$" || true)" [ -z "$keep" ] || printf ' keep %s\n' $keep >&2 if [ -z "$drop" ]; then printf ' nothing to remove.\n' >&2 else printf ' remove %s\n' $drop >&2 "$CLI" volume rm $drop >/dev/null fi printf '==> done\n' >&2