181 lines
4.9 KiB
Makefile
181 lines
4.9 KiB
Makefile
# PentestGPT Makefile
|
|
# Usage: make [target]
|
|
|
|
.PHONY: help install test test-cov test-verbose lint format typecheck clean build
|
|
.PHONY: ci ci-quick
|
|
|
|
# Default target
|
|
help:
|
|
@echo "PentestGPT Commands"
|
|
@echo "==================="
|
|
@echo ""
|
|
@echo "Setup:"
|
|
@echo " make install Install dependencies (uv sync)"
|
|
@echo ""
|
|
@echo "Development:"
|
|
@echo " make test Run all tests"
|
|
@echo " make lint Run linter (ruff)"
|
|
@echo " make format Format code (ruff)"
|
|
@echo " make typecheck Run type checker (mypy)"
|
|
@echo " make check Run all checks (lint + typecheck)"
|
|
@echo " make ci Run full CI simulation (lint, format, typecheck, test, build)"
|
|
@echo " make ci-quick Run quick CI (skip build step)"
|
|
@echo " make clean Clean build artifacts"
|
|
|
|
# ============================================================================
|
|
# Setup
|
|
# ============================================================================
|
|
|
|
install:
|
|
uv sync
|
|
|
|
# ============================================================================
|
|
# Testing
|
|
# ============================================================================
|
|
|
|
test:
|
|
uv run pytest tests/ -v
|
|
|
|
test-all:
|
|
uv run pytest tests/ -v
|
|
|
|
test-cov:
|
|
uv run pytest tests/ -v --cov=pentestgpt --cov-report=term-missing --cov-report=html
|
|
|
|
test-verbose:
|
|
uv run pytest tests/ -vvs
|
|
|
|
# Test by category
|
|
test-unit:
|
|
uv run pytest tests/unit/ -v
|
|
|
|
test-integration:
|
|
uv run pytest tests/integration/ -v
|
|
|
|
test-fast:
|
|
uv run pytest tests/ -v -m "not slow"
|
|
|
|
# Run specific test files
|
|
test-session:
|
|
uv run pytest tests/unit/test_session.py -v
|
|
|
|
test-events:
|
|
uv run pytest tests/unit/test_events.py -v
|
|
|
|
test-controller:
|
|
uv run pytest tests/integration/test_controller.py -v
|
|
|
|
test-backend:
|
|
uv run pytest tests/unit/test_backend_interface.py -v
|
|
|
|
test-config:
|
|
uv run pytest tests/unit/test_config.py -v
|
|
|
|
# ============================================================================
|
|
# Code Quality
|
|
# ============================================================================
|
|
|
|
lint:
|
|
uv run ruff check pentestgpt/ pentestgpt_legacy/ tests/
|
|
|
|
lint-fix:
|
|
uv run ruff check --fix pentestgpt/ pentestgpt_legacy/ tests/
|
|
|
|
format:
|
|
uv run ruff format pentestgpt/ pentestgpt_legacy/ tests/
|
|
|
|
format-check:
|
|
uv run ruff format --check pentestgpt/ pentestgpt_legacy/ tests/
|
|
|
|
typecheck:
|
|
uv run mypy pentestgpt/
|
|
|
|
check: lint typecheck
|
|
@echo "All checks passed!"
|
|
|
|
# ============================================================================
|
|
# CI Simulation (End-to-End)
|
|
# ============================================================================
|
|
|
|
# Full CI simulation - mirrors GitHub Actions workflow exactly
|
|
ci:
|
|
@echo "=========================================="
|
|
@echo "Running full CI simulation..."
|
|
@echo "=========================================="
|
|
@echo ""
|
|
@echo "[1/5] Lint check (ruff check)..."
|
|
uv run ruff check pentestgpt/ pentestgpt_legacy/ tests/
|
|
@echo ""
|
|
@echo "[2/5] Format check (ruff format --check)..."
|
|
uv run ruff format --check pentestgpt/ pentestgpt_legacy/ tests/
|
|
@echo ""
|
|
@echo "[3/5] Type check (mypy)..."
|
|
uv run mypy pentestgpt/
|
|
@echo ""
|
|
@echo "[4/5] Running tests..."
|
|
uv run pytest tests/ -v
|
|
@echo ""
|
|
@echo "[5/5] Building package..."
|
|
uv build
|
|
@echo ""
|
|
@echo "=========================================="
|
|
@echo "CI simulation completed successfully!"
|
|
@echo "=========================================="
|
|
|
|
# Quick CI - skip build step (faster iteration)
|
|
ci-quick:
|
|
@echo "=========================================="
|
|
@echo "Running quick CI simulation..."
|
|
@echo "=========================================="
|
|
@echo ""
|
|
@echo "[1/4] Lint check (ruff check)..."
|
|
uv run ruff check pentestgpt/ pentestgpt_legacy/ tests/
|
|
@echo ""
|
|
@echo "[2/4] Format check (ruff format --check)..."
|
|
uv run ruff format --check pentestgpt/ pentestgpt_legacy/ tests/
|
|
@echo ""
|
|
@echo "[3/4] Type check (mypy)..."
|
|
uv run mypy pentestgpt/
|
|
@echo ""
|
|
@echo "[4/4] Running tests..."
|
|
uv run pytest tests/ -v
|
|
@echo ""
|
|
@echo "=========================================="
|
|
@echo "Quick CI simulation completed successfully!"
|
|
@echo "=========================================="
|
|
|
|
# ============================================================================
|
|
# Build
|
|
# ============================================================================
|
|
|
|
build:
|
|
uv build
|
|
|
|
clean:
|
|
rm -rf dist/
|
|
rm -rf build/
|
|
rm -rf *.egg-info/
|
|
rm -rf .pytest_cache/
|
|
rm -rf .mypy_cache/
|
|
rm -rf .ruff_cache/
|
|
rm -rf htmlcov/
|
|
rm -rf .coverage
|
|
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
|
|
|
# ============================================================================
|
|
# Local Development
|
|
# ============================================================================
|
|
|
|
# Run locally
|
|
run:
|
|
uv run pentestgpt --target example.com
|
|
|
|
# Run in debug mode
|
|
run-debug:
|
|
uv run pentestgpt --target example.com --debug
|
|
|
|
# Watch for changes and run tests
|
|
watch:
|
|
uv run ptw tests/ -- -v
|