#!/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')"
