7ef5ebb695
This should automatically check for problems on build.
88 lines
2.8 KiB
Bash
Executable File
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"
|