learning_ai_common_plat/scripts/setup-husky.sh

62 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Husky Setup Script for Common Platform
# Sets up pre-commit hooks with HUSKY_ENABLED flag support
set -e
echo "🐶 Setting up Husky git hooks for common platform..."
# Create .husky directory if it doesn't exist
mkdir -p .husky
# Create pre-commit hook with HUSKY_ENABLED flag
cat > .husky/pre-commit << 'EOF'
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# Check if Husky is disabled via environment variable
if [ "$HUSKY_ENABLED" = "false" ]; then
echo "⚠️ Husky disabled via HUSKY_ENABLED=false"
echo "💡 To re-enable: unset HUSKY_ENABLED or export HUSKY_ENABLED=true"
exit 0
fi
echo "🔐 Scanning staged changes for secrets..."
bash scripts/secret-scan-staged.sh
echo "🐶 Running pre-commit hooks for common platform..."
# Run lint-staged on staged files
pnpm exec lint-staged
EOF
# Create pre-push hook with HUSKY_ENABLED flag
cat > .husky/pre-push << 'EOF'
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# Check if Husky is disabled via environment variable
if [ "$HUSKY_ENABLED" = "false" ]; then
echo "⚠️ Husky disabled via HUSKY_ENABLED=false"
echo "💡 To re-enable: unset HUSKY_ENABLED or export HUSKY_ENABLED=true"
exit 0
fi
echo "🔐 Scanning tracked files for secrets before push..."
bash scripts/secret-scan-repo.sh
EOF
# Make the hook executable
chmod +x .husky/pre-commit
chmod +x .husky/pre-push
echo "✅ Pre-commit hook created successfully!"
echo "✅ Pre-push hook created successfully!"
echo ""
echo "📖 Usage:"
echo " Normal commit: git commit -m 'feat: add feature'"
echo " Disable hooks: export HUSKY_ENABLED=false"
echo " Enable hooks: export HUSKY_ENABLED=true"
echo " One-time bypass: git commit --no-verify"