#!/bin/bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR" && git rev-parse --show-toplevel)" RENDER="$SCRIPT_DIR/d2-render.sh" usage() { cat <&2; exit 1 fi shift ;; esac done [[ ! -d "$DIR" ]] && { echo "ERROR: Directory not found: $DIR" >&2; exit 1; } RENDERED=0 SKIPPED=0 FAILED=0 while IFS= read -r -d '' d2_file; do png_file="${d2_file%.d2}.png" # Skip if PNG is newer than source (unless --force) if [[ "$FORCE" != true ]] && [[ -f "$png_file" ]] && [[ "$png_file" -nt "$d2_file" ]]; then SKIPPED=$((SKIPPED + 1)) continue fi rel_path="${d2_file#"$REPO_ROOT/"}" if [[ "$DRY_RUN" == true ]]; then echo "Would render: $rel_path" RENDERED=$((RENDERED + 1)) continue fi if "$RENDER" "$d2_file" "${EXTRA_ARGS[@]+"${EXTRA_ARGS[@]}"}"; then RENDERED=$((RENDERED + 1)) else echo "FAILED: $rel_path" >&2 FAILED=$((FAILED + 1)) fi done < <(find "$DIR" -name '*.d2' -print0 | sort -z) echo "" echo "Batch complete: $RENDERED rendered, $SKIPPED skipped (up to date), $FAILED failed"