#!/usr/bin/env bash
# backup-ms -- git snapshot of manuscript with dated tag
set -euo pipefail
dir="${1:-.}"
msg="${2:-snapshot}"
cd "$dir"
if ! git rev-parse --is-inside-work-tree &>/dev/null; then
echo "Not a git repository. Initializing..."
git init
git add -A
git commit -m "Initial manuscript commit"
fi
# Stage everything
git add -A
# Check for changes
if git diff --cached --quiet 2>/dev/null; then
echo "No changes to snapshot."
exit 0
fi
tag="ms-$(date +%Y%m%d-%H%M)"
words=$(find . -name '*.md' -o -name '*.mdx' -o -name '*.txt' 2>/dev/null | xargs cat 2>/dev/null | wc -w)
git commit -m "$msg ($words words)"
git tag "$tag"
echo "Snapshot: $tag"
echo "Words: $words"
echo "Commit: $(git log -1 --format='%h %s')"