headscale/.golangci-lint-hook.sh
2025-11-11 20:35:23 +01:00

28 lines
852 B
Bash
Executable File

#!/usr/bin/env bash
# Wrapper script for golangci-lint pre-commit hook
# Finds where the current branch diverged from the main branch
set -euo pipefail
# Try to find the main branch reference in order of preference:
# 1. upstream/main (common in forks)
# 2. origin/main (common in direct clones)
# 3. main (local branch)
for ref in upstream/main origin/main main; do
if git rev-parse --verify "$ref" >/dev/null 2>&1; then
MAIN_REF="$ref"
break
fi
done
# If we couldn't find any main branch, just check the last commit
if [ -z "${MAIN_REF:-}" ]; then
MAIN_REF="HEAD~1"
fi
# Find where current branch diverged from main
MERGE_BASE=$(git merge-base HEAD "$MAIN_REF" 2>/dev/null || echo "HEAD~1")
# Run golangci-lint only on changes since branch point
exec golangci-lint run --new-from-rev="$MERGE_BASE" --timeout=5m --fix