greydgl--pentestgpt
131 行
3.7 KiB
Makefile
131 行
3.7 KiB
Makefile
# Excalibur Makefile
|
|
# Usage: make [target]
|
|
|
|
.PHONY: help install config connect start stop shell logs clean-docker
|
|
.PHONY: dev-install test test-all test-cov lint format typecheck check clean
|
|
|
|
# Default target
|
|
help:
|
|
@echo "Excalibur Commands"
|
|
@echo "==================="
|
|
@echo ""
|
|
@echo "Docker Workflow:"
|
|
@echo " make install Build Docker image and install dependencies"
|
|
@echo " make config Configure authentication (interactive)"
|
|
@echo " make connect Connect to container (main entry point)"
|
|
@echo " make start Start container in background"
|
|
@echo " make stop Stop container (keeps config)"
|
|
@echo " make shell Open new shell in running container"
|
|
@echo " make logs View container logs"
|
|
@echo " make clean-docker Remove everything including config"
|
|
@echo ""
|
|
@echo "Development:"
|
|
@echo " make dev-install Install dev dependencies locally"
|
|
@echo " make test Run all tests"
|
|
@echo " make test-cov Run tests with coverage"
|
|
@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 clean Clean build artifacts"
|
|
|
|
# ============================================================================
|
|
# Docker Workflow
|
|
# ============================================================================
|
|
|
|
install:
|
|
@echo "Installing local dependencies with uv..."
|
|
uv sync
|
|
@echo "Building Excalibur Docker image..."
|
|
docker compose build --no-cache
|
|
|
|
config:
|
|
@chmod +x scripts/config.sh
|
|
@./scripts/config.sh
|
|
|
|
connect:
|
|
@if [ "$$(docker ps -q -f name=excalibur)" ]; then \
|
|
echo "Attaching to running container..."; \
|
|
docker attach excalibur; \
|
|
else \
|
|
echo "Starting new container..."; \
|
|
if [ -f .env.auth ]; then \
|
|
docker compose --env-file .env.auth up -d && docker attach excalibur; \
|
|
else \
|
|
docker compose up -d && docker attach excalibur; \
|
|
fi; \
|
|
fi
|
|
|
|
start:
|
|
@if [ -f .env.auth ]; then \
|
|
docker compose --env-file .env.auth up -d; \
|
|
else \
|
|
docker compose up -d; \
|
|
fi
|
|
|
|
stop:
|
|
docker compose down
|
|
|
|
shell:
|
|
docker exec -it excalibur /bin/bash
|
|
|
|
logs:
|
|
docker compose logs -f
|
|
|
|
clean-docker:
|
|
docker compose down -v
|
|
docker rmi excalibur:latest 2>/dev/null || true
|
|
rm -f .env.auth
|
|
|
|
# ============================================================================
|
|
# Local Development
|
|
# ============================================================================
|
|
|
|
dev-install:
|
|
uv sync
|
|
|
|
# ============================================================================
|
|
# Testing
|
|
# ============================================================================
|
|
|
|
test:
|
|
uv run pytest tests/ -v --ignore=tests/docker/
|
|
|
|
test-all:
|
|
uv run pytest tests/ -v
|
|
|
|
test-cov:
|
|
uv run pytest tests/ -v --ignore=tests/docker/ --cov=excalibur --cov-report=term-missing --cov-report=html
|
|
|
|
# ============================================================================
|
|
# Code Quality
|
|
# ============================================================================
|
|
|
|
lint:
|
|
uv run ruff check excalibur/ tests/
|
|
|
|
format:
|
|
uv run ruff format excalibur/ tests/
|
|
|
|
typecheck:
|
|
uv run mypy excalibur/
|
|
|
|
check: lint typecheck
|
|
@echo "All checks passed!"
|
|
|
|
# ============================================================================
|
|
# Cleanup
|
|
# ============================================================================
|
|
|
|
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
|