DSH: run.sh чинит dsh/bundle/hooks в worktree (#56) #58

Merged
aep merged 1 commits from fix/56-hooks-symlink into main 2026-10-24 18:04:51 +03:00

View File

@ -4,6 +4,25 @@ set -euo pipefail
root="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$root"
# `core.symlinks=false` checkouts materialize the tracked `dsh/bundle/hooks`
# symlink as a regular file containing "../../hooks". Repair it before the
# tests, otherwise five guard tests fail with BLOCKED instead of testing.
ensure_bundle_hooks() {
local link="$root/dsh/bundle/hooks"
[ -L "$link" ] && return 0 # symlink (or a repaired one)
[ -d "$link" ] && return 0 # published bundle: a real copy of hooks/
if [ -f "$link" ] && [ "$(cat "$link")" = "../../hooks" ]; then
rm -f "$link"
ln -s ../../hooks "$link"
echo "repaired dsh/bundle/hooks -> ../../hooks (core.symlinks=false checkout)"
return 0
fi
echo "FAIL: dsh/bundle/hooks is neither a symlink to ../../hooks nor a copy of hooks/" >&2
exit 2
}
ensure_bundle_hooks
for f in dsh/bundle/index.js dsh/bundle/command-role.js dsh/bundle/lib/*.js dsh/tests/*.mjs; do
node --check "$f"
done