#!/usr/bin/env sh # Generate TypeScript types from OpenAPI spec before commit # This ensures types are always up-to-date with the backend API cd apps/web && bash scripts/generate-types.sh # Implicit 10.1: Type checking # Prevent commits with TypeScript errors (warnings are allowed) cd apps/web && npm run typecheck 2>&1 | grep -q "error TS" && { echo "❌ Type checking failed. Please fix TypeScript errors before committing." echo "💡 Run 'npm run typecheck' to see all errors." exit 1 } || true # Implicit 10.2: Linting # Prevent commits with linting errors (warnings are allowed) cd apps/web && npm run lint 2>&1 | grep -q "error" && { echo "❌ Linting failed. Please fix linting errors before committing." echo "💡 Tip: Run 'npm run lint:fix' to automatically fix some issues." exit 1 } || true # Implicit 10.3: Test checking (optional, fast unit tests only) # Skip if SKIP_TESTS environment variable is set (for quick commits) # Only runs unit tests (not E2E) to keep it fast if [ -z "$SKIP_TESTS" ]; then cd apps/web && npm test -- --run 2>&1 | grep -q "FAIL" && { echo "❌ Tests failed. Please fix failing tests before committing." echo "💡 Tip: Run 'npm test' to see all test failures." echo "💡 Tip: Set SKIP_TESTS=1 to skip tests for this commit (not recommended)." exit 1 } || true fi