83cee46078
- scripts/bump_fable_mcp_version.sh: increments patch in pyproject.toml and stages it - scripts/pre_commit_fable_mcp.sh: PreToolUse Bash hook — fires before git commits, bumps version if fable-mcp files (other than pyproject.toml itself) are staged - .claude/settings.json: registers the PreToolUse hook Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
40 lines
1.0 KiB
Bash
Executable File
40 lines
1.0 KiB
Bash
Executable File
#!/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="/home/bvandeusen/Nextcloud/Projects/fabledassistant"
|
|
|
|
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
|