36 lines
1.0 KiB
PowerShell
36 lines
1.0 KiB
PowerShell
# run-hook.ps1 — 通用 hook dispatcher
|
||
# 从 .cursor/local-env.json 读取 shell 类型,决定执行 .ps1 还是 .sh 脚本
|
||
# 用法:powershell -ExecutionPolicy Bypass -File .cursor/hooks/run-hook.ps1 <hook-name>
|
||
# 示例:run-hook.ps1 session-init → 执行 session-init.ps1 或 session-init.sh
|
||
|
||
param([string]$HookName)
|
||
|
||
$localEnvPath = ".cursor\local-env.json"
|
||
$shell = "powershell"
|
||
|
||
if (Test-Path $localEnvPath) {
|
||
try {
|
||
$config = Get-Content $localEnvPath -Raw | ConvertFrom-Json
|
||
if ($config.shell) { $shell = $config.shell }
|
||
} catch {}
|
||
}
|
||
|
||
$hookDir = ".cursor\hooks"
|
||
$input = [Console]::In.ReadToEnd()
|
||
|
||
if ($shell -eq "powershell") {
|
||
$scriptPath = Join-Path $hookDir "$HookName.ps1"
|
||
if (Test-Path $scriptPath) {
|
||
$input | powershell -ExecutionPolicy Bypass -File $scriptPath
|
||
} else {
|
||
Write-Output '{}'
|
||
}
|
||
} else {
|
||
$scriptPath = Join-Path $hookDir "$HookName.sh"
|
||
if (Test-Path $scriptPath) {
|
||
$input | bash $scriptPath
|
||
} else {
|
||
Write-Output '{}'
|
||
}
|
||
}
|