TH1/Tools/InstallGraphifyHook.ps1

46 lines
1.4 KiB
PowerShell

$ErrorActionPreference = "Stop"
$repoRoot = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot ".."))
$gitDir = Join-Path $repoRoot ".git"
$hooksDir = Join-Path $gitDir "hooks"
$hookPath = Join-Path $hooksDir "post-commit"
if (-not (Test-Path $gitDir)) {
throw "No .git directory found at $repoRoot"
}
if (-not (Test-Path $hooksDir)) {
New-Item -ItemType Directory -Path $hooksDir | Out-Null
}
$hook = @'
#!/bin/sh
# Runs the repository-owned graphify post-commit updater.
#
# Graphify full rebuilds are expensive on this repo and can make the
# workstation sluggish. Keep automatic post-commit rebuilds opt-in.
if [ "$GRAPHIFY_POST_COMMIT" != "1" ]; then
exit 0
fi
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || exit 0
CHANGED=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || git diff --name-only HEAD 2>/dev/null)
if [ -z "$CHANGED" ]; then
exit 0
fi
export GRAPHIFY_CHANGED="$CHANGED"
if command -v pwsh >/dev/null 2>&1; then
(cd "$REPO_ROOT" && pwsh -NoProfile -ExecutionPolicy Bypass -File "Tools/GraphifyPostCommit.ps1") >/dev/null 2>&1 &
elif command -v powershell.exe >/dev/null 2>&1; then
(cd "$REPO_ROOT" && powershell.exe -NoProfile -ExecutionPolicy Bypass -File "Tools/GraphifyPostCommit.ps1") >/dev/null 2>&1 &
fi
exit 0
'@
[System.IO.File]::WriteAllText($hookPath, $hook, [System.Text.UTF8Encoding]::new($false))
Write-Host "Installed graphify post-commit hook: $hookPath"