#!/bin/sh # Security pre-commit hook — runs checks inside Docker, no host installs required. # Install: git config core.hooksPath .githooks REPO_ROOT="$(git rev-parse --show-toplevel)" # Collect staged files on the host and pass them into the container as arguments STAGED=$(git diff --cached --name-only --diff-filter=ACM) if [ -z "$STAGED" ]; then echo "[pre-commit] no staged files — skipping security check." exit 0 fi echo "[pre-commit] running security checks..." # Pass staged file list via environment variable docker run --rm \ -v "$REPO_ROOT":/repo \ -w /repo \ -e STAGED_FILES="$STAGED" \ python:3.12-slim \ sh -c "pip install --quiet bandit && python scripts/security_check.py" EXIT_CODE=$? if [ $EXIT_CODE -ne 0 ]; then echo "[pre-commit] commit blocked by security check." exit 1 fi exit 0