Files
brent.edwards 7ef5ebb695 feat: Add Q0: Pre-commit hooks setup.
This should automatically check for problems on build.
2026-02-10 16:04:17 +00:00

88 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Developer setup script for CleverAgents
# Usage: bash scripts/setup-dev.sh
#
# This script sets up the development environment including:
# - Installing all dependencies (dev, tests, docs extras)
# - Installing pre-commit hooks
# - Verifying tool installations
# - Running an initial quality check
set -euo pipefail
BOLD='\033[1m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
info() { echo -e "${BOLD}${GREEN}[INFO]${NC} $*"; }
warn() { echo -e "${BOLD}${YELLOW}[WARN]${NC} $*"; }
error() { echo -e "${BOLD}${RED}[ERROR]${NC} $*"; }
# Check Python version
info "Checking Python version..."
PYTHON_VERSION=$(python3 --version 2>&1 | grep -oP '\d+\.\d+')
REQUIRED_VERSION="3.13"
if [ "$(printf '%s\n' "$REQUIRED_VERSION" "$PYTHON_VERSION" | sort -V | head -n1)" != "$REQUIRED_VERSION" ]; then
error "Python >= $REQUIRED_VERSION is required, found $PYTHON_VERSION"
exit 1
fi
info "Python $PYTHON_VERSION detected"
# Install the project with all development extras
info "Installing project with dev, tests, and docs extras..."
pip install -e ".[dev,tests,docs]" --quiet
# Install pre-commit hooks
info "Installing pre-commit hooks..."
pre-commit install
pre-commit install --hook-type commit-msg
info "Pre-commit hooks installed (pre-commit and commit-msg stages)"
# Verify key tools are available
info "Verifying tool installations..."
TOOLS_OK=true
for tool in ruff pyright bandit vulture radon pre-commit behave; do
if command -v "$tool" > /dev/null 2>&1; then
VERSION=$("$tool" --version 2>&1 | head -1)
info " $tool: $VERSION"
else
warn " $tool: NOT FOUND (check PATH or installation)"
TOOLS_OK=false
fi
done
if [ "$TOOLS_OK" = false ]; then
warn "Some tools were not found. They may be installed in a location not on your PATH."
warn "Try: export PATH=\"\$HOME/.local/bin:\$PATH\""
fi
# Run a quick quality check
info "Running initial quality check..."
echo ""
info "--- Ruff Format Check ---"
ruff format --check . 2>&1 || warn "Some files need formatting. Run: ruff format ."
echo ""
info "--- Ruff Lint Check ---"
ruff check . 2>&1 || warn "Some lint issues found. Run: ruff check --fix ."
echo ""
info "--- Pyright Type Check ---"
pyright 2>&1 || warn "Type checking found issues."
echo ""
info "Development environment setup complete."
info ""
info "Available commands:"
info " nox - Run all quality checks and tests"
info " nox -s unit_tests - Run Behave unit tests"
info " nox -s integration_tests - Run Robot integration tests"
info " nox -s coverage_report - Run tests with coverage"
info " nox -s lint - Run linter"
info " nox -s format - Format code"
info " nox -s typecheck - Run type checker"
info " pre-commit run --all-files - Run all pre-commit hooks"