#!/usr/bin/env bash
set -euo pipefail

# -----------------------------
# volumecopy: Docker Volume Copy Tool
# Usage: volumecopy <source_volume> <target_volume>
# -----------------------------

if [ "$#" -ne 2 ]; then
  echo "Usage: volumecopy <source_volume> <target_volume>"
  exit 1
fi

SRC="$1"
DST="$2"

echo "==> Source: $SRC"
echo "==> Target: $DST"

# Prüfen ob Volumes existieren
if ! docker volume inspect "$SRC" >/dev/null 2>&1; then
  echo "ERROR: Source volume '$SRC' does not exist!"
  exit 1
fi

if ! docker volume inspect "$DST" >/dev/null 2>&1; then
  echo "ERROR: Target volume '$DST' does not exist!"
  exit 1
fi

# Warnung bei gleichem Namen
if [ "$SRC" == "$DST" ]; then
  echo "ERROR: Source and target must be different!"
  exit 1
fi

echo "==> Starting copy..."
echo "!! Make sure no container is using these volumes !!"
sleep 2

docker run --rm \
  -v "$SRC":/from \
  -v "$DST":/to \
  alpine sh -c "cp -a /from/. /to/"

echo "==> Copy completed."

# Optional: Größe vergleichen
echo "==> Comparing sizes..."
docker run --rm \
  -v "$SRC":/from \
  -v "$DST":/to \
  alpine sh -c "du -sh /from /to"

echo "==> Done."