#!/usr/bin/env bash # Claude Code PreToolUse hook for Bash. # Reads the tool input JSON from stdin; if the command is a git commit # and fable-mcp files (other than pyproject.toml) are staged, bumps # the fable-mcp patch version before the commit proceeds. # # Exits 0 always so it never blocks the commit. set -euo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" input=$(cat) command=$(echo "$input" | python3 -c " import sys, json data = json.load(sys.stdin) # Claude Code sends {tool_input: {command: ...}} ti = data.get('tool_input', data) print(ti.get('command', '')) " 2>/dev/null || echo "") # Only act on git commit commands if ! echo "$command" | grep -qE "git commit"; then exit 0 fi cd "$REPO_ROOT" # Check if fable-mcp files other than pyproject.toml are staged fable_staged=$(git diff --cached --name-only 2>/dev/null \ | grep "^fable-mcp/" \ | grep -v "^fable-mcp/pyproject.toml$" \ || true) if [ -n "$fable_staged" ]; then bash "$REPO_ROOT/scripts/bump_fable_mcp_version.sh" fi exit 0