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