49 lines
1.3 KiB
Bash
Executable file
49 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# append_sigdl.sh — Append {{< sigdl >}} to posts (idempotent).
|
|
# Usage:
|
|
# ./append_sigdl.sh [-c content] [-i "posts PhD_journey"] [-n]
|
|
# Options:
|
|
# -c content directory (default: content)
|
|
# -i space-separated subdirs under content (default: "posts PhD_journey")
|
|
# -n dry run
|
|
|
|
set -euo pipefail
|
|
|
|
CONTENT_DIR="content"
|
|
INCLUDE_DIRS=("posts" "PhD_journey" "about")
|
|
DRYRUN=0
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-c) CONTENT_DIR="${2:-content}"; shift 2 ;;
|
|
-i) IFS=' ' read -r -a INCLUDE_DIRS <<< "${2:-}"; shift 2 ;;
|
|
-n) DRYRUN=1; shift ;;
|
|
-h|--help)
|
|
echo "append_sigdl.sh [-c content] [-i \"posts PhD_journey\"] [-n]"; exit 0 ;;
|
|
*) echo "Unknown arg: $1"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
TOTAL=0
|
|
UPDATED=0
|
|
|
|
for sub in "${INCLUDE_DIRS[@]}"; do
|
|
ROOT="$CONTENT_DIR/$sub"
|
|
[[ -d "$ROOT" ]] || { echo "skip missing: $ROOT"; continue; }
|
|
while IFS= read -r -d '' md; do
|
|
TOTAL=$((TOTAL+1))
|
|
if grep -q '{{< *sigdl' "$md"; then
|
|
echo "exists: $md"
|
|
continue
|
|
fi
|
|
echo "append: $md"
|
|
UPDATED=$((UPDATED+1))
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
printf "\n\n---\n\n{{< sigdl >}}\n" >> "$md"
|
|
fi
|
|
done < <(find "$ROOT" -type f -name '*.md' -print0)
|
|
done
|
|
|
|
echo "Done. Files seen: $TOTAL, appended: $UPDATED."
|
|
[[ $DRYRUN -eq 1 ]] && echo "(dry run: no changes)"
|
|
|