Skip to content

Commit e00613b

Browse files
chore(cdn): Add check script
1 parent bd6ddf6 commit e00613b

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

tools/check-images.sh

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/bin/bash
2+
# Check that every image referenced in _posts/ exists in Cloudflare R2.
3+
# Also reports images in R2 that aren't referenced anywhere (orphans).
4+
#
5+
# Usage: ./tools/check-images.sh
6+
7+
set -euo pipefail
8+
9+
BUCKET="techno-tim-images"
10+
REMOTE="r2"
11+
POSTS_DIR="_posts"
12+
TMP_REF=$(mktemp)
13+
TMP_R2=$(mktemp)
14+
15+
echo "==> Scanning posts for image references..."
16+
grep -roh '/assets/img/[^"'"'"' )]*' "$POSTS_DIR/" \
17+
| sed 's|.*:/assets/|/assets/|' \
18+
| sort -u > "$TMP_REF"
19+
20+
echo "==> Fetching R2 file list..."
21+
rclone ls "$REMOTE:$BUCKET/assets/img/" \
22+
| awk '{print "/assets/img/"$2}' \
23+
| grep -v '^/assets/img/favicons/' \
24+
| sort -u > "$TMP_R2"
25+
26+
REFERENCED=$(wc -l < "$TMP_REF" | tr -d ' ')
27+
IN_R2=$(wc -l < "$TMP_R2" | tr -d ' ')
28+
29+
echo ""
30+
echo " Referenced in posts : $REFERENCED"
31+
echo " Files in R2 : $IN_R2"
32+
echo ""
33+
34+
# Images referenced in posts but missing from R2
35+
MISSING=$(comm -23 "$TMP_REF" "$TMP_R2")
36+
MISSING_COUNT=$(echo "$MISSING" | grep -c . || true)
37+
38+
if [ -z "$MISSING" ]; then
39+
echo "✅ All referenced images exist in R2."
40+
else
41+
echo "$MISSING_COUNT image(s) referenced in posts but MISSING from R2:"
42+
echo "$MISSING" | sed 's/^/ /'
43+
echo ""
44+
echo "To upload missing images (if you have them locally):"
45+
echo " ./tools/upload-images.sh assets/img/"
46+
fi
47+
48+
echo ""
49+
50+
# Images in R2 not referenced in any post (orphans)
51+
ORPHANS=$(comm -13 "$TMP_REF" "$TMP_R2")
52+
ORPHAN_COUNT=$(echo "$ORPHANS" | grep -c . || true)
53+
54+
if [ -z "$ORPHANS" ]; then
55+
echo "✅ No orphaned images in R2."
56+
else
57+
echo "ℹ️ $ORPHAN_COUNT image(s) in R2 not referenced in any post (may be safe to delete):"
58+
echo "$ORPHANS" | sed 's/^/ /'
59+
fi
60+
61+
rm -f "$TMP_REF" "$TMP_R2"

0 commit comments

Comments
 (0)