#!/usr/bin/env sh set -eu status=0 fields=${BLOG_REQUIRED_FIELDS:-title date} tmp=${TMPDIR:-.}/blog-frontmatter.$$ trap 'rm -f "$tmp"' EXIT HUP INT TERM if [ "$#" -gt 0 ]; then printf '%s\n' "$@" > "$tmp" else : > "$tmp" for d in content posts post blog notes garden essays articles src/content src/pages _posts pages; do [ -d "$d" ] || continue find "$d" -type f \( -name '*.md' -o -name '*.mdx' \) >> "$tmp" done fi while IFS= read -r f; do first=$(sed -n '1p' "$f") if [ "$first" != "---" ]; then printf 'missing frontmatter: %s\n' "$f" status=1 continue fi for field in $fields; do if ! sed -n '1,/^---$/p' "$f" | rg -q "^$field:"; then printf 'missing %s: %s\n' "$field" "$f" status=1 fi done done < "$tmp" exit "$status"