| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- : << 'CMDBLOCK'
- @echo off
- REM Cross-platform polyglot wrapper for hook scripts.
- REM On Windows: cmd.exe runs the batch portion, which finds and calls bash.
- REM On Unix: the shell interprets this as a script (: is a no-op in bash).
- REM
- REM Hook scripts use extensionless filenames (e.g. "session-start" not
- REM "session-start.sh") so Claude Code's Windows auto-detection -- which
- REM prepends "bash" to any command containing .sh -- doesn't interfere.
- REM
- REM Usage: run-hook.cmd <script-name> [args...]
- if "%~1"=="" (
- echo run-hook.cmd: missing script name >&2
- exit /b 1
- )
- set "HOOK_DIR=%~dp0"
- REM Try Git for Windows bash in standard locations
- if exist "C:\Program Files\Git\bin\bash.exe" (
- "C:\Program Files\Git\bin\bash.exe" "%HOOK_DIR%%~1" %2 %3 %4 %5 %6 %7 %8 %9
- exit /b %ERRORLEVEL%
- )
- if exist "C:\Program Files (x86)\Git\bin\bash.exe" (
- "C:\Program Files (x86)\Git\bin\bash.exe" "%HOOK_DIR%%~1" %2 %3 %4 %5 %6 %7 %8 %9
- exit /b %ERRORLEVEL%
- )
- REM Try bash on PATH (e.g. user-installed Git Bash, MSYS2, Cygwin)
- where bash >nul 2>nul
- if %ERRORLEVEL% equ 0 (
- bash "%HOOK_DIR%%~1" %2 %3 %4 %5 %6 %7 %8 %9
- exit /b %ERRORLEVEL%
- )
- REM No bash found - exit silently rather than error
- REM (plugin still works, just without SessionStart context injection)
- exit /b 0
- CMDBLOCK
- # Unix: run the named script directly
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
- SCRIPT_NAME="$1"
- shift
- exec bash "${SCRIPT_DIR}/${SCRIPT_NAME}" "$@"
|