87 lines
3.8 KiB
Makefile
87 lines
3.8 KiB
Makefile
# Makefile for cleaning Python cache files and empty directories
|
|
# Author: AI Assistant
|
|
# Usage: make clean or make clean-all
|
|
|
|
.PHONY: clean clean-all clean-pyc clean-pytest clean-mypy clean-empty-dirs help
|
|
|
|
# Colors for pretty output
|
|
GREEN := \033[0;32m
|
|
YELLOW := \033[0;33m
|
|
RED := \033[0;31m
|
|
NC := \033[0m # No Color
|
|
|
|
# Default target
|
|
help:
|
|
@echo "$(GREEN)Available targets:$(NC)"
|
|
@echo " $(YELLOW)make clean$(NC) - Remove Python cache files, pytest cache, mypy cache, and empty directories"
|
|
@echo " $(YELLOW)make clean-pyc$(NC) - Remove Python cache files (__pycache__, .pyc, .pyo)"
|
|
@echo " $(YELLOW)make clean-pytest$(NC) - Remove pytest cache (.pytest_cache)"
|
|
@echo " $(YELLOW)make clean-mypy$(NC) - Remove mypy cache (.mypy_cache)"
|
|
@echo " $(YELLOW)make clean-empty-dirs$(NC) - Remove empty directories"
|
|
@echo " $(YELLOW)make clean-all$(NC) - Remove everything (cache, logs, coverage, build, dist, etc.)"
|
|
|
|
# Main clean target
|
|
clean: clean-pyc clean-pytest clean-mypy clean-empty-dirs
|
|
@echo "$(GREEN)✓ Cleanup completed successfully!$(NC)"
|
|
|
|
# Clean Python cache files
|
|
clean-pyc:
|
|
@echo "$(YELLOW)Removing Python cache files...$(NC)"
|
|
@find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
@find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
|
@find . -type f -name "*.pyo" -delete 2>/dev/null || true
|
|
@find . -type f -name "*.pyd" -delete 2>/dev/null || true
|
|
@echo "$(GREEN)✓ Python cache files removed$(NC)"
|
|
|
|
# Clean pytest cache
|
|
clean-pytest:
|
|
@echo "$(YELLOW)Removing pytest cache...$(NC)"
|
|
@rm -rf .pytest_cache 2>/dev/null || true
|
|
@find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
|
|
@echo "$(GREEN)✓ Pytest cache removed$(NC)"
|
|
|
|
# Clean mypy cache
|
|
clean-mypy:
|
|
@echo "$(YELLOW)Removing mypy cache...$(NC)"
|
|
@rm -rf .mypy_cache 2>/dev/null || true
|
|
@find . -type d -name ".mypy_cache" -exec rm -rf {} + 2>/dev/null || true
|
|
@echo "$(GREEN)✓ Mypy cache removed$(NC)"
|
|
|
|
# Remove empty directories
|
|
clean-empty-dirs:
|
|
@echo "$(YELLOW)Removing empty directories...$(NC)"
|
|
@# Remove empty directories (including hidden ones), excluding .git and .venv
|
|
@find . -type d -empty -not -path "./.git/*" -not -path "./.venv/*" -not -path "./venv/*" -not -path "./env/*" -not -path "./.env/*" -delete 2>/dev/null || true
|
|
@# Second pass to remove newly created empty parent directories
|
|
@find . -type d -empty -not -path "./.git/*" -not -path "./.venv/*" -not -path "./venv/*" -not -path "./env/*" -not -path "./.env/*" -delete 2>/dev/null || true
|
|
@echo "$(GREEN)✓ Empty directories removed$(NC)"
|
|
|
|
# Clean everything (extended cleanup)
|
|
clean-all: clean
|
|
@echo "$(YELLOW)Removing additional files...$(NC)"
|
|
@# Coverage reports
|
|
@rm -rf htmlcov .coverage coverage.xml .coverage.* 2>/dev/null || true
|
|
@# Build artifacts
|
|
@rm -rf build/ dist/ *.egg-info .eggs/ 2>/dev/null || true
|
|
@# Log files
|
|
@find . -type f -name "*.log" -delete 2>/dev/null || true
|
|
@# Jupyter notebooks checkpoint
|
|
@find . -type d -name ".ipynb_checkpoints" -exec rm -rf {} + 2>/dev/null || true
|
|
@# IDE files (optional, uncomment if needed)
|
|
# @rm -rf .vscode/ .idea/ 2>/dev/null || true
|
|
@echo "$(GREEN)✓ Extended cleanup completed!$(NC)"
|
|
|
|
# Dry run - show what would be deleted (for safety)
|
|
clean-dry-run:
|
|
@echo "$(YELLOW)Dry run - files that would be deleted:$(NC)"
|
|
@echo "\nPython cache files:"
|
|
@find . -type d -name "__pycache__" 2>/dev/null || echo "None"
|
|
@find . -type f -name "*.pyc" 2>/dev/null || echo "None"
|
|
@find . -type f -name "*.pyo" 2>/dev/null || echo "None"
|
|
@echo "\nPytest cache:"
|
|
@find . -type d -name ".pytest_cache" 2>/dev/null || echo "None"
|
|
@echo "\nMypy cache:"
|
|
@find . -type d -name ".mypy_cache" 2>/dev/null || echo "None"
|
|
@echo "\nEmpty directories:"
|
|
@find . -type d -empty -not -path "./.git/*" -not -path "./.venv/*" 2>/dev/null || echo "None"
|
|
@echo "$(YELLOW)\nRun 'make clean' to actually delete these files$(NC)"
|