2025-06-15 18:04:06 +08:00

197 lines
7.7 KiB
Makefile

# Makefile for mcp-feedback-enhanced development
# 適用於 mcp-feedback-enhanced 專案開發
# Compatible with Windows PowerShell and Unix systems
# 兼容 Windows PowerShell 和 Unix 系統
.PHONY: help install install-dev install-hooks lint format type-check test clean pre-commit-run pre-commit-all update-deps check-rust build-desktop build-desktop-release test-desktop clean-desktop build-all test-all test-func test-web test-desktop-func
# 預設目標 - 顯示幫助訊息
help: ## Show this help message
@echo "Available commands:"
@echo ""
@echo " dev-setup Complete development setup"
@echo " install Install the package"
@echo " install-dev Install development dependencies"
@echo " install-hooks Install pre-commit hooks"
@echo " lint Run linting with Ruff"
@echo " lint-fix Run linting with auto-fix"
@echo " format Format code with Ruff"
@echo " format-check Check code formatting"
@echo " type-check Run type checking with mypy"
@echo " check Run all code quality checks"
@echo " check-fix Run all checks with auto-fix"
@echo " pre-commit-run Run pre-commit on staged files"
@echo " pre-commit-all Run pre-commit on all files"
@echo " pre-commit-update Update pre-commit hooks"
@echo " test Run tests"
@echo " test-cov Run tests with coverage"
@echo " test-fast Run tests without slow tests"
@echo " test-func Run functional tests (standard)"
@echo " test-web Run Web UI tests (continuous)"
@echo " test-desktop-func Run desktop application functional tests"
@echo " clean Clean up cache and temporary files"
@echo " ps-clean PowerShell version of clean (Windows)"
@echo " update-deps Update dependencies"
@echo " build Build the package"
@echo " build-check Check the built package"
@echo " bump-patch Bump patch version"
@echo " bump-minor Bump minor version"
@echo " bump-major Bump major version"
@echo " ci Simulate CI pipeline locally"
@echo " quick-check Quick check with auto-fix"
@echo ""
@echo "Desktop Application Commands:"
@echo " build-desktop Build desktop application (debug)"
@echo " build-desktop-release Build desktop application (release)"
@echo " test-desktop Test desktop application"
@echo " clean-desktop Clean desktop build artifacts"
@echo " check-rust Check Rust development environment"
# 安裝相關命令
install: ## Install the package
uv sync
install-dev: ## Install development dependencies
uv sync --dev
install-hooks: ## Install pre-commit hooks
uv run pre-commit install
@echo "✅ Pre-commit hooks installed successfully!"
# 程式碼品質檢查命令
lint: ## Run linting with Ruff
uv run ruff check .
lint-fix: ## Run linting with auto-fix
uv run ruff check . --fix
format: ## Format code with Ruff
uv run ruff format .
format-check: ## Check code formatting
uv run ruff format . --check
type-check: ## Run type checking with mypy
uv run mypy
# 組合品質檢查命令
check: lint format-check type-check ## Run all code quality checks
check-fix: lint-fix format type-check ## Run all checks with auto-fix
# Pre-commit 相關命令
pre-commit-run: ## Run pre-commit on staged files
uv run pre-commit run
pre-commit-all: ## Run pre-commit on all files
uv run pre-commit run --all-files
pre-commit-update: ## Update pre-commit hooks
uv run pre-commit autoupdate
# 測試相關命令
test: ## Run tests
uv run pytest
test-cov: ## Run tests with coverage
uv run pytest --cov=src/mcp_feedback_enhanced --cov-report=html --cov-report=term
test-fast: ## Run tests without slow tests
uv run pytest -m "not slow"
# 功能測試命令
test-func: ## Run functional tests (standard)
uv run python -m mcp_feedback_enhanced test
test-web: ## Run Web UI tests (continuous)
uvx --no-cache --with-editable . mcp-feedback-enhanced test --web
test-desktop-func: ## Run desktop application functional tests
uvx --no-cache --with-editable . mcp-feedback-enhanced test --desktop
# 維護相關命令
clean: ## Clean up cache and temporary files
@echo "Cleaning up..."
@if exist ".mypy_cache" rmdir /s /q ".mypy_cache" 2>nul || true
@if exist ".ruff_cache" rmdir /s /q ".ruff_cache" 2>nul || true
@if exist ".pytest_cache" rmdir /s /q ".pytest_cache" 2>nul || true
@if exist "htmlcov" rmdir /s /q "htmlcov" 2>nul || true
@if exist "dist" rmdir /s /q "dist" 2>nul || true
@if exist "build" rmdir /s /q "build" 2>nul || true
@find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
@find . -name "*.pyc" -delete 2>/dev/null || true
@find . -name "*.pyo" -delete 2>/dev/null || true
@find . -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
@echo "✅ Cleanup completed!"
update-deps: ## Update dependencies
uv sync --upgrade
# 建置相關命令
build: ## Build the package
uv build
build-check: ## Check the built package
uv run twine check dist/*
# 版本發布命令
bump-patch: ## Bump patch version
uv run bump2version patch
bump-minor: ## Bump minor version
uv run bump2version minor
bump-major: ## Bump major version
uv run bump2version major
# 開發工作流程
dev-setup: install-dev install-hooks ## Complete development setup
@echo "🎉 Development environment setup complete!"
@echo ""
@echo "Next steps:"
@echo " 1. Run 'make check' to verify everything works"
@echo " 2. Start coding! Pre-commit hooks will run automatically"
@echo " 3. Use 'make help' to see all available commands"
# CI 流程模擬
ci: clean install-dev pre-commit-all test ## Simulate CI pipeline locally
# 快速開發命令
quick-check: lint-fix format type-check ## Quick check with auto-fix (recommended for development)
# Windows PowerShell 專用命令
ps-clean: ## PowerShell version of clean (Windows)
powershell -Command "Get-ChildItem -Path . -Recurse -Name '__pycache__' | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue; Get-ChildItem -Path . -Recurse -Name '*.pyc' | Remove-Item -Force -ErrorAction SilentlyContinue; @('.mypy_cache', '.ruff_cache', '.pytest_cache', 'htmlcov', 'dist', 'build') | ForEach-Object { if (Test-Path $$_) { Remove-Item $$_ -Recurse -Force } }"
# 桌面應用程式相關命令
check-rust: ## Check Rust development environment
@echo "🔍 Checking Rust environment..."
@rustc --version || (echo "❌ Rust not installed. Please visit https://rustup.rs/" && exit 1)
@cargo --version || (echo "❌ Cargo not installed" && exit 1)
@cargo install --list | grep tauri-cli || (echo "⚠️ Tauri CLI not installed, installing..." && cargo install tauri-cli)
@echo "✅ Rust environment check completed"
build-desktop: ## Build desktop application (debug mode)
@echo "🔨 Building desktop application (debug)..."
uv run python scripts/build_desktop.py
build-desktop-release: ## Build desktop application (release mode)
@echo "🚀 Building desktop application (release)..."
uv run python scripts/build_desktop.py --release
test-desktop: build-desktop ## Test desktop application
@echo "🖥️ Testing desktop application..."
uv run python -m mcp_feedback_enhanced test --desktop
clean-desktop: ## Clean desktop build artifacts
@echo "🧹 Cleaning desktop build artifacts..."
uv run python scripts/build_desktop.py --clean
# 完整構建流程(包含桌面應用程式)
build-all: clean build-desktop-release build ## Build complete package with desktop app
@echo "🎉 Complete build finished!"
# 測試所有功能
test-all: test test-func test-desktop ## Run all tests including desktop and functional tests
@echo "✅ All tests completed!"