diff --git a/README.md b/README.md index 80ff1e3a..1fcb30d7 100644 --- a/README.md +++ b/README.md @@ -280,6 +280,16 @@ If you're upgrading from the Claude Code SDK (versions < 0.1.0), please see the - Settings isolation and explicit control - New programmatic subagents and session forking features +## Development + +If you're contributing to this project, run the initial setup script to install git hooks: + +```bash +./scripts/initial-setup.sh +``` + +This installs a pre-push hook that runs lint checks before pushing, matching the CI workflow. To skip the hook temporarily, use `git push --no-verify`. + ## License MIT diff --git a/scripts/initial-setup.sh b/scripts/initial-setup.sh new file mode 100755 index 00000000..de6ff607 --- /dev/null +++ b/scripts/initial-setup.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Initial setup script for installing git hooks + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + +echo "Setting up git hooks..." + +# Install pre-push hook +echo "→ Installing pre-push hook..." +cp "$SCRIPT_DIR/pre-push" "$REPO_ROOT/.git/hooks/pre-push" +chmod +x "$REPO_ROOT/.git/hooks/pre-push" +echo "✓ pre-push hook installed" + +echo "" +echo "✓ Setup complete!" +echo "" +echo "The pre-push hook will now run lint checks before each push." +echo "To skip the hook temporarily, use: git push --no-verify" diff --git a/scripts/pre-push b/scripts/pre-push new file mode 100755 index 00000000..f009b614 --- /dev/null +++ b/scripts/pre-push @@ -0,0 +1,30 @@ +#!/bin/bash + +# Pre-push hook to run lint checks (matches .github/workflows/lint.yml) + +echo "Running lint checks before push..." +echo "" + +# Run ruff check +echo "→ Running ruff check..." +python -m ruff check src/ tests/ +if [ $? -ne 0 ]; then + echo "" + echo "❌ ruff check failed. Fix lint issues before pushing." + echo " Run: python -m ruff check src/ tests/ --fix" + exit 1 +fi + +# Run ruff format check +echo "→ Running ruff format check..." +python -m ruff format --check src/ tests/ +if [ $? -ne 0 ]; then + echo "" + echo "❌ ruff format check failed. Fix formatting before pushing." + echo " Run: python -m ruff format src/ tests/" + exit 1 +fi + +echo "" +echo "✓ All lint checks passed!" +exit 0