#!/bin/bash
# Pre-commit hook to generate README.md options from script argparse help

### Install pre-commit hook:
# ln -s ../../tools/pre-commit .git/hooks/pre-commit

REPO_ROOT=$(git rev-parse --show-toplevel)

# Check if semtag.py has been modified
echo "Pre-commit hook running..."
if git diff --cached --name-only | grep -q semtag.py; then
  echo "Updating README.md options..."
  cd "$REPO_ROOT" || exit 1

  OPTIONS_TMP=$(mktemp)
  README_TMP=$(mktemp)

  # Prefer virtual environment python if exists
  if [ -d venv ];then
    PYPATH="$REPO_ROOT/venv/bin/python"
  else
    PYPATH="python3"
  fi

  $PYPATH semtag.py --help 2>&1 | sed -n '/^options:/,/^$/p' | tail -n +2 > "$OPTIONS_TMP"

  # README with updated options
  awk -v opts_file="$OPTIONS_TMP" '
    /<!-- OPTIONS:START -->/ { print; print "```"; system("cat " opts_file); print "```"; skip=1; next }
    /<!-- OPTIONS:END -->/ { skip=0 }
    !skip
  ' README.md > "$README_TMP"
    
  if [ $? -eq 0 ]; then
    mv "$README_TMP" README.md
    rm -f "$OPTIONS_TMP"
    git add README.md
    echo "README.md options updated and staged"
  else
    echo "Failed to update README.md"
    rm -f "$README_TMP" "$OPTIONS_TMP"
    exit 1
  fi
fi

exit 0
