#!/usr/bin/env bash # format-markdown.sh # Author: Matthew Raymer # Date: 2025-07-09 # Description: Format markdown files to comply with project markdown ruleset set -e if [ $# -eq 0 ]; then echo "Usage: $0 [more files...]" exit 1 fi for target in "$@"; do if [ -d "$target" ]; then files=$(find "$target" -type f -name "*.md") else files="$target" fi for file in $files; do # Remove trailing spaces sed -i 's/[[:space:]]*$//' "$file" # Remove multiple consecutive blank lines awk 'NF{blank=0} !NF{blank++} blank<2' "$file" > "$file.tmp" && mv "$file.tmp" "$file" # Ensure file ends with a single newline awk '1; END{if (NR && $0!="") print ""}' "$file" > "$file.tmp" && mv "$file.tmp" "$file" # Optionally run markdownlint (requires npx and markdownlint-cli) if command -v npx >/dev/null 2>&1; then npx markdownlint "$file" else echo "npx/markdownlint not found, skipping lint check for $file" fi done done echo "Markdown formatting complete."