Files
Crussell/.githooks/pre-commit
T
popertotsandSisyphus 1c09e4220b
CI / Go vulnerabilities (push) Successful in 29s
CI / Frontend lint & types (push) Successful in 1m37s
CI / Tests (push) Successful in 1m50s
CI / Race detector (push) Successful in 3m48s
fix: run eslint on every commit and restore gdpr navigation eslint-disable
Pre-commit hook now runs eslint on all frontend files regardless of what's staged, catching pre-existing issues. Restore the necessary eslint-disable in gdpr page for the async goto call.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-05 22:43:48 +01:00

54 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
# Pre-commit hook: run CI-equivalent checks on staged files.
# Fails the commit if any check fails — matches CI pipeline in .gitea/workflows/ci.yaml.
#
# To skip: git commit --no-verify
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Colour
FAILED=0
# ---------- Frontend (prettier —write, then eslint) ----------
FRONTEND_STAGED=$(git diff --cached --name-only -- 'frontend/' | head -1)
if [ -n "$FRONTEND_STAGED" ]; then
printf "${YELLOW}Auto-formatting staged frontend files with prettier...${NC}\n"
cd frontend && npx prettier --write . 2>&1
# Re-stage any files prettier modified so formatting is included in the commit
cd ..
git diff --name-only -- 'frontend/' | xargs -r git add
fi
# Always run eslint — catches pre-existing issues that would fail the pipeline
printf "${YELLOW}Checking eslint (all files)...${NC}\n"
if ! cd frontend && npx eslint . 2>&1; then
printf "${RED}✖ eslint failed${NC}\n"
FAILED=1
fi
cd ..
# ---------- Backend (go vet) ----------
BACKEND_FILES=$(git diff --cached --name-only -- 'backend/' | head -1)
if [ -n "$BACKEND_FILES" ]; then
printf "${YELLOW}Checking go vet...${NC}\n"
if ! cd backend && go vet ./... 2>&1; then
printf "${RED}✖ go vet failed${NC}\n"
FAILED=1
fi
cd ..
fi
# ---------- Result ----------
if [ "$FAILED" -ne 0 ]; then
printf "\n${RED}Commit blocked — fix the issues above, then commit again.${NC}\n"
printf "${YELLOW}To skip checks: git commit --no-verify${NC}\n"
exit 1
fi
printf "${GREEN}✓ All pre-commit checks passed${NC}\n"
exit 0