9759a4c3a3
- Create scripts/build, scripts/test, scripts/run, scripts/install-hooks - Create git-hooks/pre-commit (auto-format staged .hs files) - Create git-hooks/pre-push (check formatting + hlint before push) - Handle git worktrees correctly in hook installation - Run fourmolu on all source files to fix existing formatting
25 lines
716 B
Bash
Executable File
25 lines
716 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install git hooks for the roux-server project.
|
|
# Run once: ./scripts/install-hooks
|
|
set -euo pipefail
|
|
|
|
HOOK_SRC="$(cd "$(dirname "${BASH_SOURCE[0]}")/git-hooks" && pwd)"
|
|
# Determine git hooks directory — supports both regular repos and worktrees
|
|
GIT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/.git"
|
|
if [ -f "$GIT_DIR" ]; then
|
|
# Worktree: .git is a file pointing to the real gitdir
|
|
GIT_DIR="$(cut -d' ' -f2 "$GIT_DIR")"
|
|
fi
|
|
HOOK_DST="${GIT_DIR}/hooks"
|
|
|
|
mkdir -p "$HOOK_DST"
|
|
echo "Installing git hooks from $HOOK_SRC -> $HOOK_DST"
|
|
|
|
for hook in "$HOOK_SRC"/*; do
|
|
name=$(basename "$hook")
|
|
ln -sf "$hook" "$HOOK_DST/$name"
|
|
echo " $name installed"
|
|
done
|
|
|
|
echo "Done."
|