Files
rustfs-s3-toolkit/Makefile
2025-07-24 11:26:35 +08:00

115 lines
3.4 KiB
Makefile

# RustFS S3 Toolkit - 开发工具
.PHONY: help install clean build check test publish-test publish
help: ## 显示帮助信息
@echo "RustFS S3 Toolkit 开发命令:"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
install: ## 安装开发环境
@echo "🔧 安装开发环境..."
pip install -e ".[dev]"
@echo "✅ 开发环境安装完成"
clean: ## 清理构建文件
@echo "🧹 清理构建文件..."
rm -rf dist/
rm -rf build/
rm -rf *.egg-info/
rm -rf src/*.egg-info/
find . -name '__pycache__' -type d -exec rm -rf {} + 2>/dev/null || true
find . -name '*.pyc' -delete 2>/dev/null || true
@echo "✅ 清理完成"
format: ## 格式化代码
@echo "🎨 格式化代码..."
black src/ tests/ examples/
isort src/ tests/ examples/
@echo "✅ 代码格式化完成"
lint: ## 代码检查
@echo "🔍 代码检查..."
flake8 src/ tests/ examples/
mypy src/
@echo "✅ 代码检查完成"
test: ## 运行单元测试
@echo "🧪 运行单元测试..."
PYTHONPATH=src pytest tests/ -v --cov=rustfs_s3_toolkit --cov-report=term-missing
@echo "✅ 单元测试完成"
test-all: ## 测试所有 Python 版本 (3.9-3.13)
@echo "🧪 测试所有 Python 版本..."
tox -e py39,py310,py311,py312,py313
@echo "✅ 多版本测试完成"
test-quick: ## 快速测试 (当前 Python 版本)
@echo "⚡ 快速测试..."
PYTHONPATH=src pytest tests/ -v
@echo "✅ 快速测试完成"
test-integration: ## 集成测试 (需要真实 S3 服务)
@echo "🔗 集成测试 (需要 S3 服务)..."
@echo "⚠️ 确保已配置 S3 服务连接信息"
RUN_INTEGRATION_TESTS=1 PYTHONPATH=src pytest tests/test_toolkit.py::test_all_functions -v -s
@echo "✅ 集成测试完成"
coverage: ## 生成覆盖率报告
@echo "📊 生成覆盖率报告..."
tox -e coverage
@echo "✅ 覆盖率报告生成完成 (查看 htmlcov/index.html)"
build: clean ## 构建包
@echo "📦 构建包..."
python -m build
@echo "✅ 构建完成"
check: build ## 检查包格式
@echo "🔍 检查包格式..."
python publish.py --check-only
@echo "✅ 包格式检查完成"
publish-test: ## 发布到 TestPyPI
@echo "🧪 发布到 TestPyPI..."
python publish.py --test
@echo "✅ TestPyPI 发布完成"
publish: ## 交互式发布到 PyPI
@echo "🚀 交互式发布..."
python publish.py
publish-auto: ## 自动发布到 PyPI (无交互)
@echo "🚀 自动发布到 PyPI..."
python publish.py --auto
# 发布前完整检查
pre-publish: format lint test-all build check ## 发布前完整检查
@echo "✅ 发布前检查全部通过!"
# 生产发布流程 (推荐)
publish-prod: pre-publish ## 生产发布流程 (包含所有检查)
@echo "🚀 开始生产发布流程..."
@echo "📋 检查清单:"
@echo " ✅ 代码格式化"
@echo " ✅ 代码质量检查"
@echo " ✅ 多版本测试 (Python 3.9-3.13)"
@echo " ✅ 包构建和验证"
@echo ""
python publish.py
dev-setup: ## 完整开发环境设置
@echo "🚀 设置完整开发环境..."
python -m venv .venv || true
@echo "请运行: source .venv/bin/activate"
@echo "然后运行: make install"
# CI/CD 流程
ci: lint test coverage ## CI 流程 (代码检查 + 测试 + 覆盖率)
@echo "✅ CI 流程完成"
all: format lint test build check ## 运行所有检查和构建
# 默认目标
.DEFAULT_GOAL := help