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

usage() {
    echo "Usage: $(basename "$0") <input_dir> <output_dir>"
    exit 1
}

[[ $# -ne 2 ]] && usage

INPUT_DIR="${1%/}"
OUTPUT_DIR="${2%/}"

if [[ ! -d "$INPUT_DIR" ]]; then
    echo "Error: input directory '$INPUT_DIR' does not exist." >&2
    exit 1
fi

mkdir -p "$OUTPUT_DIR"

count=0
errors=0

while IFS= read -r -d '' file; do
    rel="${file#"$INPUT_DIR"/}"
    out="$OUTPUT_DIR/$rel"
    mkdir -p "$(dirname "$out")"

    if magick "$file" -resize '12.5%' "$out"; then
        echo "  scaled: $rel"
        (( count++ )) || true
    else
        echo "  error:  $rel" >&2
        (( errors++ )) || true
    fi
done < <(find "$INPUT_DIR" -type f \( -iname '*.dds' -o -iname '*.tga' -o -iname '*.jpg' -o -iname '*.jpeg' \) -print0)

echo ""
echo "Done. $count image(s) scaled, $errors error(s)."
